React로 작업하고 동일한 구성 요소의 여러 인스턴스가 있는 경우 상태 관리가 까다로울 수 있습니다. 구성 요소가 어떻게 상호 작용해야 하는지에 따라 상태를 다르게 처리해야 합니다. 제가 찾은 방법은 다음과 같습니다.
구성 요소가 서로 통신할 필요가 없다면 구성 요소 내부에 상태를 유지하는 것이 가장 좋습니다. 이런 방식으로 각 인스턴스에는 고유한 상태가 있으며, 한 인스턴스의 변경 사항이 다른 인스턴스에 영향을 주지 않습니다.
function Counter() { const [count, setCount] = useState(0); return (); } // UsageCount: {count}
// Instance 1 // Instance 2
여기서 각 Counter 구성 요소는 자체 개수를 추적합니다. 따라서 한 카운터에서 버튼을 클릭해도 다른 카운터의 개수는 변경되지 않습니다.
그러나 구성 요소가 일부 상태를 공유하거나 조정된 방식으로 작동해야 하는 경우 상태를 상위 구성 요소로 이동하는 것이 좋습니다. 부모는 공유 상태를 관리하고 이를 props로 전달할 수 있습니다. 이렇게 하면 모든 인스턴스가 동기화 상태를 유지하고 원활하게 함께 작동할 수 있습니다.
function Parent() { const [sharedCount, setSharedCount] = useState(0); return (); } function Counter({ count, setCount }) { return (Total Count: {sharedCount}
); }Count: {count}
이 접근 방식은 상태가 상위 구성 요소에 있을 때 해당 상태를 업데이트하면 모든 인스턴스가 다시 렌더링되어 모두 최신 UI가 표시되도록 하기 때문에 효과적입니다. 상태가 각 인스턴스에 별도로 유지되는 경우 상태 변경이 있는 인스턴스만 다시 렌더링되어 인스턴스 전체에서 UI가 일관되지 않게 됩니다.
내 프로젝트의 예
아코디언 구성요소를 만들면서 이 사실을 알아냈습니다. 다음은 내 작업의 두 가지 예입니다.
독립 아코디언 인스턴스: 예. 이 설정에서는 각 아코디언 인스턴스가 독립적으로 작동합니다.
종속 아코디언 인스턴스: 예. 이 버전에서는 모든 아코디언 인스턴스가 서로 의존하고 동기화 상태를 유지합니다.
빠른 요약
구성요소가 별도로 작동하는 경우 각 구성요소 내부에 상태를 유지합니다.
상태를 공유하거나 조정된 방식으로 함께 작업해야 하는 경우 상위에서 상태를 관리하세요.
이 접근 방식은 아코디언 예제를 만들 때 큰 변화를 가져왔습니다. 여러분에게도 도움이 되기를 바랍니다!
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3