我有一个自定义钩子,在里面我正在做这个:
useEffect(() => {
dimensions.forEach(dimension => {
dimension.filterFunction(...);
});
}, [ dimensions, endDate, startDate ]);
问题是每次都会运行,因为我正在传递一个新的CCD_ 1数组。在父级中,如果我执行const dimensions = useMemo(() => [ dimension ], [ dimension ])
,它会修复它。但是有什么方法可以防止它出现在我的自定义钩子中吗?
将维度作为参数传递给包装useEffect()
的函数,并将其从数组中删除(该数组是使用Effect的第二个参数(怎么样?
const useDimensions = (dimensions) => {
useEffect(() => {
dimensions.forEach(dimension => {
dimension.filterFunction(...);
});
}, [ endDate, startDate ]);
};
这应该可以防止它被重新渲染,并且你应该能够在需要的时候调用它