В первом блоге мы работали над настройкой структуры проекта и создавали уровень представления, теперь пришло время погрузиться в остальную часть приложения и заставить ее работать.

Прежде чем мы приступим к написанию кода, давайте установим некоторые пакеты, которые нам понадобятся в этой части руководства.

Выполните следующие команды в своем терминале

$ npm install --save redux react-redux redux-thunk axios
$ npm install --save-dev moxios redux-mock-store

Во-первых, мы устанавливаем redux для основных redux функций и redux-thunk для выполнения асинхронных вызовов API.

Действия

Действия по определению - это полезные данные, которые отправляют данные из вашего приложения в магазин. В компоненте пользователь нажимает кнопку отправки, это вызывает действие отправки для обработки данных и, в свою очередь, передает обработанные данные соответствующему редуктору, который, наконец, сохранит данные в хранилище.

Следуя прецеденту, установленному в первом блоге, мы сначала напишем тесты, а затем реализуем функцию, чтобы тесты прошли, так что давайте перейдем к делу.

src/actions/TodoActions.test.js

Что ж, тестирование действия несложно, если оно принимает какую-либо полезную нагрузку, оно должно возвращать тип и полезную нагрузку, которые можно легко протестировать.

src/actions/TodoActions.js

Выполнение тестов на этом этапе должно вернуть PASS.

Теперь, когда у нас есть действия, давайте сделаем редукторы, как раньше, и начнем с тестов. Вставьте этот код в src/reducers/todoReducers.test.js.

Реализовать и протестировать редукторы очень просто, поскольку они являются чистыми функциями, создают src/reducers/todoReducers.js и вставляют в него весь следующий код.

В приложениях часто используется более одного редуктора, что приводит к необходимости их объединения, для этого обычно используется index.js файл, который объединяет все редукторы, прежде чем они смогут повлиять на хранилище.

Теперь последняя недостающая часть работающего приложения redux - это магазин, создайте следующий файл src/store/store.js.

Теперь у нас есть все части для приложения React redux, все, что нам нужно, это связать их. В src/index.js обновлять, чтобы было так.

Что ж, теперь давайте обновим презентацию, чтобы использовать добавленную нами часть redux. Итак, в качестве напоминания давайте еще раз рассмотрим приложение redux. Компонент вызовет действие, действие через промежуточное ПО (в данном случае преобразователь) вызовет внешний API, который вернет данные и передаст их соответствующим редукторам. Соответствующие редукторы обновят соответствующие части магазина.

Сначала обновляем src/components/app/AddTodo.js

и в src/components/app/AddTodo.test.js обновите этот import AddTodo from ‘./AddTodo’; до import { AddTodo } from ‘./AddTodo’;. Это сделано для того, чтобы не настраивать магазин перед тестированием AddTodo компонента. Теперь обновляем файл src/components/app/TodoApp.js.

и в обновлении src/components/app/TodoItem.js читать из магазина, как показано ниже.

Ну, это было достаточно давно, я остановлюсь здесь, и в следующий раз мы будем работать над добавлением нескольких функций, тестового сервера и хостинга.