#reactjs #redux #react-redux
#reactjs #сокращение #реагировать-redux
Вопрос:
Я экспериментирую с Redux. Я понимаю, что для отправки действия в хранилище из функциональных компонентов можно подписаться с помощью useDispatch
hook. Я отправляю действие из useEffect
и согласно документу react-redux., dispatch
может быть исключен из списка зависимостей для useEffect
, поскольку его идентификатор стабилен.
const TriviaCategories = () => {
const dispatch = useDispatch();
useEffect(() => {
dispatch({ type: "SET_CATEGORIES", triviaCategories });
}, []);
return null;
};
Если я решу использовать connect
для подписки на хранилище, будет ли dispatch
идентификатор функции по-прежнему стабильным, как с useDispatch
hook?
Комментарии:
1. При использовании
connect
специальной отправки и сопоставления с вашими создателями действий создатели действий заключены в вызов dispatch, поэтому на самом деле нет необходимости напрямую обращаться кdispatch
prop.
Ответ №1:
dispatch
Функция всегда будет стабильной, пока вы продолжаете передавать один и тот же экземпляр Redux store в свой <Provider store={store}>
, потому что dispatch
это просто store.dispatch
.
Однако правило lint React «привязки зависимостей» не знает этого. Он знает, что функции из встроенных перехватчиков React ( useState
установщики и useReducer
функции отправки) всегда стабильны, поэтому он может использовать особый случай и игнорировать их, но у него нет способа узнать, что dispatch
функция React-Redux должна быть стабильной. Таким образом, он всегда будет предупреждать, что вам нужно добавить его в массив effect deps.
Из-за этого вы могли бы также просто всегда добавлять его в массив deps.