Точка входа¶
Подтянем Redux и react-redux
в наш проект:
1 |
|
Точка входа в наше приложение - src/index.js
Обновим его содержимое:
src/index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Итак, первый компонент из мира Redux - <Provider />
.
Благодаря этому компоненту, мы сможем получать необходимые данные из store
нашего приложения, если воспользуемся вспомогательной функцией connect
, речь о которой пойдет далее. Сейчас нам и получать нечего, так как store
у нас - пустой объект.
Давайте подробнее посмотрим на строку 1:
1 |
|
Во-первых, если вам трудно читать ES2015 код, то переводите его в привычный ES5, с помощью babel-playground.
На скриншоте ниже: слева - современный код, справа - старый ES5 код, после преобразования.
Во-вторых, давайте взглянем на документацию метода createStore: принимает один обязательный аргумент (функцию reducer
) и парочку не обязательных (начальное состояние и "усилители").
Теперь переведем то, что мы написали, когда присваивали store
:
Возьми пустую анонимную функцию в качестве редьюсера и пустой объект в качестве начального состояния. Если коротко: возьми ничего и "ничего" не делай.
Предлагаю вынести создание store
в отдельный файл, так как в нем мы добавим позже несколько строк кода, в том числе, добавим усилителей (enhancers
).
src/store/configureStore.js
1 2 3 |
|
Поправить импорт в индексе:
src/index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Усилители - это middleware функции. Если читатель знаком с express.js, то он знаком с усилителями в redux. Для остальных: типичный усилитель - логгер (logger
), который просто пишет в консоль все что происходит с наблюдаемым объектом.
Давайте так же исправим App.js
, чтобы обозначить чем мы тут с вами занимаемся:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Итого: мы настроили точку входа для redux-приложения (src/index.js
), в которой обернули все в <Provider />
. Так же вынесли для будущего удобства настройку store
в отдельный файл.