--- id: 5a24c314108439a4d4036141 title: Getting Started with React Redux challengeType: 6 isRequired: false videoUrl: '' localeTitle: Начало работы с React Redux --- ## Description
Эта серия проблем знакомит с использованием Redux с React. Во-первых, рассмотрим некоторые ключевые принципы каждой технологии. Реагирование - это библиотека представлений, которую вы предоставляете с данными, а затем рендерит представление эффективным и предсказуемым образом. Redux - это система управления состоянием, которую вы можете использовать для упрощения управления состоянием вашего приложения. Как правило, в приложении React Redux вы создаете одно хранилище Redux, которое управляет состоянием всего вашего приложения. Ваши компоненты React подписываются только на части данных в магазине, которые имеют отношение к их роли. Затем вы отправляете действия непосредственно из компонентов React, которые затем запускают обновления магазина. Хотя компоненты React могут управлять своим собственным состоянием локально, когда у вас сложное приложение, обычно лучше поддерживать состояние приложения в одном месте с помощью Redux. Существуют исключения, когда отдельные компоненты могут иметь локальное состояние, специфичное только для них. Наконец, поскольку Redux не предназначен для работы с React из коробки, вам нужно использовать пакет react-redux . Он предоставляет вам возможность передать state Redux и dispatch ваши компоненты React в качестве props . В следующих нескольких задачах, во-первых, вы создадите простой компонент React, который позволит вам вводить новые текстовые сообщения. Они добавляются в массив, который отображается в представлении. Это должен быть хороший обзор того, что вы узнали на уроках React. Затем вы создадите хранилище Redux и действия, управляющие состоянием массива сообщений. Наконец, вы будете использовать react-redux для подключения хранилища Redux к вашему компоненту, тем самым извлекая локальное состояние в хранилище Redux.
## Instructions
Начните с компонента DisplayMessages . Добавьте конструктор к этому компоненту и инициализируйте его с состоянием, которое имеет два свойства: input , который установлен в пустую строку, и messages , которые установлены в пустой массив.
## Tests
```yml tests: - text: Компонент DisplayMessages должен отображать пустой элемент div . testString: 'assert((function() { const mockedComponent = Enzyme.mount(React.createElement(DisplayMessages)); return mockedComponent.find("div").text() === "" })(), "The DisplayMessages component should render an empty div element.");' - text: 'Конструктор DisplayMessages следует правильно называть super , передавая в props .' testString: 'getUserInput => assert((function() { const noWhiteSpace = getUserInput("index").replace(/\s/g,""); return noWhiteSpace.includes("constructor(props)") && noWhiteSpace.includes("super(props"); })(), "The DisplayMessages constructor should be called properly with super, passing in props.");' - text: 'Компонент DisplayMessages должен иметь начальное состояние, равное {input: "", messages: []} .' testString: 'assert((function() { const mockedComponent = Enzyme.mount(React.createElement(DisplayMessages)); const initialState = mockedComponent.state(); return typeof initialState === "object" && initialState.input === "" && Array.isArray(initialState.messages) && initialState.messages.length === 0; })(), "The DisplayMessages component should have an initial state equal to {input: "", messages: []}.");' ```
## Challenge Seed
```jsx class DisplayMessages extends React.Component { // change code below this line // change code above this line render() { return
} }; ```
### After Test
```js console.info('after the test'); ```
## Solution
```js // solution required ```