Хуки и контекст не предназначены для управления состоянием приложения вместо Redux.
Контекст больше похож на свойства в том смысле, что он разрешает кошмар, который может стать при передаче информации от родителя к дочернему в больших, сильно вложенных приложениях корпоративного уровня. Недостатком является то, что Context немного сложнее, и его настройка может быть болезненной.
Хуки просто позволяют нам использовать функциональные компоненты, которые теперь могут подключаться к состоянию приложения без необходимости превращать их в компоненты на основе классов.
Путаница заключается в том, что вы можете получить функциональность из Redux с помощью хука вроде useReducer
без традиционной настройки Redux.
Например, если вы работали над приложением для блога и хотели добавить функциональность для обновления своих сообщений в блоге, вы можете применить useReducer
следующим образом:
const blogReducer = (state, action) => {
switch (action.type) {
case 'add_blogpost':
return [...state, { title: `Blog Post #${state.length + 1}` }];
default:
return state;
}
};
Итак, это будет ваш редуктор, который вы затем примените так:
export const BlogProvider = ({ children }) => {
const [blogPosts, dispatch] = useReducer(blogReducer, []);
Вы можете временно создать вспомогательную функцию для отправки объекта действия:
const addBlogPost = () => {
dispatch({ type: 'add_blogpost' });
};
Вам нужно будет добавить его в свою ценность, 'add_blogpost'
. В любом случае, это просто запутанный способ использования аспектов Redux в функциональном компоненте без использования всей системы Redux, но опять же, не замена.
person
Daniel
schedule
13.09.2019
useReducer
/useContext
. - person ford04   schedule 14.04.2020