redux-course-ru
  • Вступление
  • Подготовка
    • Создание package.json
    • Первые шаги
    • ES2015, React HMR
    • ESLint
    • Установка зависимостей на автомате
    • React dev tools
  • Создание
    • Основы Redux (теория)
    • Точка входа
    • Настройка Store
    • Создание Reducer
    • Присоединение данных (connect)
    • Комбинирование редьюсеров
    • Контейнеры и компоненты
    • Создание actions
    • Константы
    • Наводим порядок
    • Middleware (усилители). Логгер
    • Асинхронные actions
    • Взаимодействуем с VK
  • Заключение
Powered by GitBook
On this page

Was this helpful?

  1. Создание

Точка входа

PreviousОсновы Redux (теория)NextНастройка Store

Last updated 5 years ago

Was this helpful?

ОБНОВЛЕНИЕ 2018: Вышло (современный код и версии пакетов, данное издание УСТАРЕЛО)

На так же проводятся бесплатные вебинары, публикуются переводы и авторские материалы, !

Точка входа

Подтянем Redux и react-redux в наш проект:

npm i redux react-redux --save

Как уже было описано в разделе "подготовка", точка входа в наше приложение - src/index.js

Обновим его содержание:

src/index.js

import React from 'react'
import { render } from 'react-dom'
import { createStore } from 'redux'
import { Provider } from 'react-redux'
import App from './containers/App'

const store = createStore( () => {}, {}) //WAT ;)

render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById('root')
)

Благодаря этому компоненту, мы сможем получать необходимые данные из store нашего приложения, если воспользуемся вспомогательной функцией connect, речь о которой пойдет далее. Сейчас нам и получать нечего, так как store у нас - пустой объект.

Давайте подробнее посмотрим на строку:

const store = createStore( () => {}, {})

Теперь переведем то, что мы написали, когда присваивали store: Возьми пустую анонимную функцию в качестве редьюсера и пустой объект в качестве начального состояния. Если коротко: возьми ничего и "ничего" не делай.

Предлагаю вынести создание store в отдельный файл, для того, чтобы добавить возможность HMR и для более удобной работы с reducer'ом и усилителями (enhancers).

src/index.js

import React from 'react'
import { render } from 'react-dom'
import { Provider } from 'react-redux'
import App from './containers/App'
import configureStore from './store/configureStore'

const store = configureStore()

render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById('root')
)

Итак, первый компонент из мира Redux - <Provider /> ( ).

Во-первых, если вам трудно читать ES2015 код, то переводите его в привычный ES5, с помощью .

Во-вторых, давайте взглянем на документацию метода : принимает один обязательный аргумент (функцию reducer) и парочку не обязательных (начальное состояние и "усилители").

Усилители - это middleware функции. Если читатель знаком с , то он знаком с усилителями в redux. Для остальных: типичный усилитель - логгер (logger), который просто пишет в консоль все что происходит с наблюдаемым объектом.

Если посмотреть в консоль, webpack все так же усердно работает и сообщает об ошибке: нет файла configureStore... Пора создать, а текущий код можно взять .

второе издание
канале
присоединяйтесь
[EN] документация
babel-playground
createStore
express.js
здесь