Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DS-113] Button, ToggleButton forwardRef 적용 #143

Merged
merged 3 commits into from
Nov 29, 2023
Merged

Conversation

LTakhyunKim
Copy link
Contributor

@LTakhyunKim LTakhyunKim commented Nov 28, 2023

DS-113

기존 Button, ToggleButton 에 forwardRef 가 적용되지 않아 Ref 를 받지 않는 이슈를 해결합니다.

@LTakhyunKim LTakhyunKim added the bug Something isn't working label Nov 28, 2023
@LTakhyunKim LTakhyunKim requested a review from deminoth November 28, 2023 05:22
@LTakhyunKim LTakhyunKim self-assigned this Nov 28, 2023
@LTakhyunKim
Copy link
Contributor Author

요거 제가 놓친 부분이 있어 다시 수정하겠습니당
type 지정을 잘못했네용

@deminoth deminoth self-requested a review November 28, 2023 06:18
@LTakhyunKim
Copy link
Contributor Author

히스토리 관리 및 내용 공유를 위해 코멘트 남깁니다.
forwardRef 와 component props 활용을 위한 OverridableComponent 를 함께 사용 시 타입 에러 발생합니다.
하기 첨부된 이슈는 PR 을 통해 해결된 것으로 확인됩니다.
다만 해결된 환경이 react 17 버전으로 확인됩니다.

forwardRef 에 의해 return 되는 component 타입이 Element | null 였고,
이에 따라 OverridableComponent 에서의 return 타입도 Element 에서 null 타입을 추가하여 해결했습니다.
(forwardRef 는 타입을 따라가다보면 ExoticComponent 이 나오는데 이걸 찾아보시는게 빠를 수 있습니다.)

동일한 방식을 Design System 에 적용했을 땐 에러가 발생하여 확인해보니,
React 18 forwardRef 에 의해 return 되는 component 타입이 ReactNode 로 변경되었고
OverridableComponent 의 타입은 17 때와 동일하여, 이에 따른 타입 에러가 발생한 것으로 보입니다.

Copy link

github-actions bot commented Nov 29, 2023

@LTakhyunKim LTakhyunKim merged commit a623945 into main Nov 29, 2023
3 of 4 checks passed
@LTakhyunKim LTakhyunKim deleted the ds-113-button-ref branch November 29, 2023 04:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants