[antd] Calendar onSelect의 비정상적 트리거 - [Open]
antd의 Calendar 컴포넌트에서 버그라고 생각되는 동작이 있습니다. Github Issue에 등록되어있습니다.
https://github.com/ant-design/ant-design/issues/39801
5.1.0 calendar组件的 onSelect、onChange 似乎有错,和认知中表现不一致 · Issue #39801 · ant-design/ant-design
Reproduction link Steps to reproduce 点击任何日期 或者 切换月份,然后查看 console的输出 What is expected? onSelect 方法我理解中,是当我选中某个 day后才会触发,但是我切换月份(比如改成1月,再改成3月
github.com
antd의 Calendar 컴포넌트는 다음과 같이 생겼습니다.
연, 월을 dropdown에서 선택하여 이동할 수 있습니다. 그리고 "month", "year" calendar mode가 있어서 month mode에서는 일별로 보이고, year mode에서는 월별로 보입니다.
이때 연, 월을 dropdown을 선택하여 이동하는 경우 calendar에서 dayjs 객체로 되어있는 value의 year, month를 업데이트합니다. 이때 onChange가 callback됩니다.
calendar에서 마우스로 날짜를 클릭하는 경우에도 value를 업데이트합니다. 이때는 onChange와 함께 선택 event에 대한 onSelect가 callback됩니다.
그런데 현재 연, 월을 선택하여 이동하는 경우 onChange만 호출되어야하는데 onSelect도 함께 호출되고 있습니다. antd에서 어떤 시나리오를 생각한건지는 모르겠지만, 현재 onChange와 onSelect가 완전히 동일하게 동작하고 있습니다. 동일하게 동작하는 callback을 두 개로 만든 것은 의도하지 않았을 것입니다.
관련해서 PR을 작성하였습니다.
https://github.com/ant-design/ant-design/pull/41553
fix: calendar onChange only trigger change by jglee96 · Pull Request #41553 · ant-design/ant-design
[中文版模板 / Chinese template] 🤔 This is a ... New feature Bug fix Site / documentation update Demo update Component style update TypeScript definition update Bundle size optimization Performa...
github.com
하지만 며칠이 지나도 확인이 없습니다. 아마 이번 5.4.0 릴리즈에서 calendar 관련 수정 내용이 많아 확인이 늦는거 같습니다. master rebase하고 다시 기다려봐야겠습니다.