[Fix] deviceType undefined 에러 뜨는 이슈 해결 #411
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Related Issue : Closes #410
🧑🎤 Summary
🧑🎤 Screenshot
전 - css가 먹히지 않음
후 - css 먹힘
🧑🎤 Comment
🧘🏻♂️ Maximum update depth exceeded. 에러 해결
일단 현재는 deviceType을 FormContext에서 관리하고 있었는데요
FormContext는 input들 각각에 required를 각자 관리해주기 위해 있는 거였어요
이때 deviceType을 이 안에 넣어주게 됨으로써
각각의 input들에서 각자의 device type을 관리하게 되었어요
다시 말해 각각의 input들에서 각각 useDevice를 실행해주는 것이죠
이 때문에 Maximum update 이슈도 발생한 것으로 파악이 돼요!
따라서 FormContext에서 deviceType을 제거하고
App.tsx에서 전체 컴포넌트에 하나의 DeciveTypeContext를 감싸준 뒤
이를 모든 곳에서 활용하도록 했어요
각 input들 마다 다른 device type이 필요한 것이 아니라
모든 곳에서 공통된 device type이 사용되니까요!
🧘🏻♂️ Form context의 device type undefined 떠서 디자인 적용 안 되는 이슈 해결
왜 안 되는 거였는가?
기존에는 Textbox 안에서 FormContext를 Provider를 이용해서 감싸주고 있었어요
이 말은 곧 Textbox 하위 컴포넌트에서 해당 context를 이용할 수 있다는 얘기인데요
TextBox이메일, TextBox비밀번호 등등은
Textbox를 자식으로 가지는 부모 컴포넌트이기에 해당 context를 이용할 수가 없었어요
그렇기에 undefined가 뜨는 거였습니다!
그럼 왜 디자인은 반응형으로 줄어들었는가?
deviceType이 undefined라서 웹페이지 크기가 어떻든 width는 208로 고정되어 있었어요
하지만 InputLine 컴포넌트의 flex css 속성을 1로 설정해서 자동으로 늘어났다 줄어드는 거였어요
실제로 해당 속성을 제거하면 width가 고정이 됩니다!
DeviceTypeContext를 Textbox에서 App.tsx로 옮겨줌으로써 해당 이슈도 해결이 되었어요 :)