我有一个自定义钩子,并且在内部执行此操作:
useEffect(() => {
dimensions.forEach(dimension => {
dimension.filterFunction(...);
});
}, [ dimensions, endDate, startDate ]);
问题在于,由于我要传递新的dimensions
数组,因此每次都会运行。如果我做父母const dimensions = useMemo(() => [ dimension ], [ dimension ])
,它将解决此问题。但是有什么方法可以防止这种情况出现在我的自定义钩子中吗?
答案 0 :(得分:1)
将维度作为参数传递给包装useEffect()
的函数并将其从数组中删除(该数组是useEffect的第二个参数)怎么样?
const useDimensions = (dimensions) => {
useEffect(() => {
dimensions.forEach(dimension => {
dimension.filterFunction(...);
});
}, [ endDate, startDate ]);
};
那应该避免重新渲染它,您应该可以在需要时调用它。