Я переписал некоторые из моих обычных компонентов в функциональный компонент, потому что мне нравится использовать новый хук useContext
для передачи реквизитов (в основном это функция, которая должна использоваться во вложенных дочерних компонентах), однако, это вызывает некоторые ненужные повторы и яЯ пытаюсь предотвратить это, обернув некоторые из моих функций хуком useCallback
.Мне очень нравится идея этого, но в некоторых моих функциях я использую другие функции, которые хранятся в подпорках (например, создатели с редуктивным действием).Давайте возьмем следующий код в качестве примера:
const deleteNode = useCallback((node) => {
if (currentNodeEditing && currentNodeEditing.id === node.id) {
props.closeSideMenu(sideMenuType.editNode);
}
props.deleteNode(node.questionnaire, node);
}, [currentNodeEditing]);
В этой функции props.deleteNode
& props.closeSideMenu
являются Redux Action Creators.Я использую правило eslint "react-hooks/exhaustive-deps"
, и это дает мне предупреждение о том, что в хуке useCallback отсутствует зависимость от реквизита.Но если я передам свойство props, моя функция будет создаваться заново при каждом изменении реквизита.Мои функции closeSideMenu
и deleteNode
никогда не изменятся, потому что они являются создателями избыточных действий.
Как лучше всего обернуть эту функцию с помощью useCallback?Должен ли я просто передать реквизиты в качестве аргумента хуку useCallback, могу ли я просто проигнорировать ошибку lint, если я удалю структуру реквизита (я предпочитаю не делать этого)?