В наших предыдущих уроках мы заложили основу для понимания Redux в приложении React. Теперь давайте еще больше усовершенствуем ваши навыки Redux, сосредоточившись на том, как обрабатывать более сложные рабочие процессы с использованием dispatch
и создателей действий.
«Код похож на юмор. Когда приходится объяснять, это плохо». — Кори Хаус
1. Понимание отправки
Dispatch
— это метод, предоставляемый магазином Redux. Его роль заключается в отправке действий в хранилище Redux для запуска обновлений состояния. Мы уже видели dispatch
в действии в наших предыдущих уроках. Немного переделаем:
import { createStore } from 'redux'; // Assume our `todoReducer` is defined. let store = createStore(todoReducer); store.dispatch({ type: 'ADD_TODO', payload: { text: 'Learn Redux' } }); console.log(store.getState()); // [{ text: 'Learn Redux' }]
В этом примере мы используем store.dispatch
для отправки действия ADD_TODO
.
2. Определение создателей действий
Ввод всего объекта действия каждый раз, когда мы хотим отправить действие, может быть громоздким. Вместо этого мы можем определить функции, которые создают и возвращают эти объекты действий. Эти функции известны как создатели действий.
function addTodo(text) { return { type: 'ADD_TODO', payload: { text } }; }
В этом примере addTodo
— это создатель действия, который возвращает действие ADD_TODO
с заданным text
.
3. Отправка действий с помощью создателей действий
Когда у нас есть создатель действий, мы можем использовать его с dispatch
для отправки действий в наш магазин Redux. Вот как:
store.dispatch(addTodo('Learn more about Redux'));
В этом примере мы используем нашего создателя действия addTodo
с store.dispatch
для отправки нашего действия.
4. Привязка создателей действий
Библиотека react-redux
предоставляет функцию bindActionCreators
, которая автоматически привязывает отправку к создателям действий. Это может быть особенно удобно, когда у вас много создателей действий.
import { bindActionCreators } from 'redux'; // Assume addTodo and removeTodo are action creators. const boundActionCreators = bindActionCreators({ addTodo, removeTodo }, store.dispatch); // Now you can call them directly! boundActionCreators.addTodo('Learn more about Redux');
В этом примере bindActionCreators
привязывает store.dispatch
к нашим создателям действий, позволяя нам вызывать их напрямую.
Вы становитесь лучше в Redux с каждым днем! Понимая dispatch
и создателей действий, вы научитесь делать свой код Redux чище и удобнее в сопровождении. В следующий раз мы углубимся в более сложную тему: обработка асинхронных действий в Redux. Продолжайте учиться и удачного кодирования!
Если вам понравилась статья и вы хотите выразить свою поддержку, сделайте следующее:
👏 Аплодируйте истории (50 аплодисментов), чтобы эта статья попала в топ
👉Подпишитесь на меня в Среднем
Посмотрите больше контента в моем профиле Medium