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
  • Связывание данных из store с компонентами приложения
  • P.S. если вы переживаете, что HMR в данный момент не работает, обратите внимание на данный комментарий (это не обязательно, а только для тех, кто столкнулся с проблемой).

Was this helpful?

  1. Создание

Присоединение данных (connect)

PreviousСоздание ReducerNextКомбинирование редьюсеров

Last updated 5 years ago

Was this helpful?

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

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

Связывание данных из store с компонентами приложения

В разделе шла речь о некой функции connect, которая поможет нам получить в качестве props для компонента <App /> данные из store. Добавим ее:

src/containers/App.js

import React, { Component } from 'react'
import { connect } from 'react-redux'

class App extends Component {
  render() {
    return <div>Привет из App, { this.props.user }!</div>
  }
}

function mapStateToProps (state) {
  return {
    user: state.user
  }
}

export default connect(mapStateToProps)(App)

Назначение функции connect вытекает из названия: подключи React компонент к Redux store.

Результат работы функции connect - новый присоединенный компонент, который оборачивает переданный компонент.

У нас был компонент <App />, а на выходе получился <Connected(App)>. В этом не трудно убедиться, если взглянуть в react dev tools.

Взгляните на правую часть скриншота, и вы увидите, что в свойствах (props) нашего компонента <App /> теперь есть метод redux store - dispatch, и объект (в нашем случае, пока что строка) user. Это так же результат работы функции connect.

Давайте еще поиграемся с простым примером. Для начала изменим набор данных:

src/reducers/index.js

const initialState = {
  name: 'Василий',
  surname: 'Реактов',
  age: 27
}

export default function userstate(state = initialState) {
  return state
}

затем подкрутим компонент:

src/containers/App.js

import React, { Component } from 'react'
import { connect } from 'react-redux'

class App extends Component {
  render() {
    const { name, surname, age } = this.props.user
    return <div>
      <p>Привет из App, {name} {surname}!</p>
      <p>Тебе уже {age} ?</p>
    </div>
  }
}

function mapStateToProps (state) {
  return {
    user: state
  }
}

export default connect(mapStateToProps)(App)

Все работает ровно так, как мы указали: в объект user "подключилось" все состояние нашего приложения state, которое сейчас очень простое и описано в src/reducer/index.js.

Прежде чем мы перейдем к созданию actions и взаимодействию пользователя со страницей, давайте поговорим о комбинировании редьюсеров (combineReducers) и создадим реальную структуру нашего будущего приложения.

Полезные ссылки:

на текущий момент.

P.S. если вы переживаете, что HMR в данный момент не работает, обратите внимание на данный (это не обязательно, а только для тех, кто столкнулся с проблемой).

(офф.документация)

второе издание
канале
присоединяйтесь
"Точка входа"
Исходный код
комментарий
connect
Connect(App)