React의 Props 드릴링 토크
5015 단어 cleancodereactjavascript
React에서 Prop 드릴링을 해결할 때
Context
의 단점: 재사용성예를 들어
User
구성 요소가 깊이 중첩되어 있고 다른 Provider
에서 사용하려고 합니다. App
|-- Homepage
|-- User.Provider
|-- ... WhateverComponents
|---- ProfileComponent => use userData from provider here
다른 컨테이너에서
userData
를 사용하려면 어떻게 해야 합니까?App
|-- Homepage
| |-- User.Provider
| |-- ... WhateverComponents
| | ...
|
|-- Cart (what if we want to use userData in here?) userData will be empty here!
컨텍스트는 하나의 중첩 제공자 아래에 있는 다양한 구성 요소에 소품을 전달하는 데 적합합니다.
App
|
|
Homepage
|
|
User.Provider
|
|
_____________
| |
| |
Component1 Component2
| |
| |------------------------|
Component3 | Component5
(use userData) | |
| |
Component4 Component6
(use userData)
Props Drilling을 해결하는 방법이 있습니다. 바로 Component Compose입니다.
위의 구조를 다음과 같은 코드로 다시 작성할 수 있습니다.
// app.tsx
const App = () => {
const userData = {...}
return (
<Homepage>
<Component1>
<Component3 data={userData} />
</Component1>
<Component2>
<Component4 />
<Component5>
<Component6 data={userData} />
</Component5>
</Component2>
</Homepage>
)
}
userData
는 상위 구성 요소를 거치지 않고 컨테이너에서 바로 전달됩니다. 이것은 또한 성능을 향상시킬 수 있으므로 userData
가 변경되면 이를 사용하는 구성 요소만 다시 렌더링됩니다.React Composition의 단점: 컨테이너가 점점 더 커지면 중첩된 구성 요소 레이어가 너무 깊어질 수 있습니다. 이 문제에 대해 우리는 그것들을 더 작은 구성 요소로 나누고 각 컨테이너가 필요로 하고 유지해야 하는 소품을 현명하게 결정해야 합니다.
참조:
https://felixgerschau.com/react-component-composition/
https://reactjs.org/docs/context.html#when-to-use-context
https://kentcdodds.com/blog/prop-drilling
https://frontendmastery.com/posts/advanced-react-component-composition-guide/
Reference
이 문제에 관하여(React의 Props 드릴링 토크), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/daviddesar/props-drilling-talk-in-react-59ag텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)