使用useEffect对依赖项数组中的数组进行反应挂钩

时间:2020-03-05 15:39:33

标签: reactjs react-hooks

我有一个自定义钩子,并且在内部执行此操作:

useEffect(() => {
  dimensions.forEach(dimension => {
    dimension.filterFunction(...);
  });
}, [ dimensions, endDate, startDate ]);

问题在于,由于我要传递新的dimensions数组,因此每次都会运行。如果我做父母const dimensions = useMemo(() => [ dimension ], [ dimension ]),它将解决此问题。但是有什么方法可以防止这种情况出现在我的自定义钩子中吗?

1 个答案:

答案 0 :(得分:1)

将维度作为参数传递给包装useEffect()的函数并将其从数组中删除(该数组是useEffect的第二个参数)怎么样?

    const useDimensions = (dimensions) => {
        useEffect(() => {
            dimensions.forEach(dimension => {
                dimension.filterFunction(...);
            });
        }, [ endDate, startDate ]);
    };

那应该避免重新渲染它,您应该可以在需要时调用它。