Реагируйте ловушкой используя useEffect с массивом внутри массива зависимостей - PullRequest
1 голос
/ 05 марта 2020

У меня есть пользовательский хук, и внутри я делаю это:

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

проблема в том, что это выполняется каждый раз, потому что я передаю новый массив dimensions. В родительском, если я сделаю const dimensions = useMemo(() => [ dimension ], [ dimension ]), это исправит это. Но есть ли способ, которым я могу предотвратить это внутри моего пользовательского крючка?

1 Ответ

1 голос
/ 06 марта 2020

Как насчет передачи измерений в качестве параметра в функцию, обертывающую ваш useEffect() и удаляющую его из массива, который является вторым аргументом для использованияEffect? ​​

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

Это должно удерживать его от повторного рендеринга, и вы должен иметь возможность звонить, когда вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...