5초마다 긴 폴링에서 일부 데이터가 들어오고 있으며 배열 항목(또는 배열 길이 자체)이 변경될 때마다 내 구성 요소가 작업을 전달하도록 하고 싶습니다. 배열을 종속성으로 전달할 때 useEffect가 무한 루프에 빠지는 것을 방지하면서도 값이 변경되면 일부 작업을 예약하려면 어떻게 해야 합니까?
으아악여기서 outcomes
是一个 ID 数组,例如 [123, 234, 3212]
。数组中的项目可能会被替换或删除,因此数组的总长度可能(但不一定)保持不变,因此传递 outcomes.length
종속성은 그렇지 않습니다.
outcomes
재선택의 사용자 정의 선택기:
P粉4642089372023-10-18 15:49:11
JSON.stringify() 또는 심층 비교 방법을 사용하는 것은 덜 효율적일 수 있습니다. 객체의 모양을 미리 알고 있다면 결과에 따라 사용자 정의 동등 함수에 대한 콜백을 트리거하는 자체 효과 후크를 작성할 수 있습니다.
useEffect
的工作原理是检查依赖项数组中的每个值是否与前一渲染中的值相同,如果其中一个不是,则执行回调。因此,我们只需要使用 useRef
保留我们感兴趣的数据实例,并且仅在自定义相等性检查返回 false
효과를 트리거하려면 새 인스턴스를 할당하세요.
한 단계 더 나아가 사용자 정의 동등 기능을 허용하는 효과 후크를 생성하여 이 후크를 재사용할 수도 있습니다.
으아악P粉6628028822023-10-18 12:32:21
종속성 목록으로 JSON.stringify(outcomes)
를 전달할 수 있습니다.
자세한 내용은 여기
에서 알아보세요. 으아악