state
в Redux. Это первый шаг для подключения простого приложения React к Redux. Единственная функциональность вашего приложения - это добавить новые сообщения от пользователя в неупорядоченный список. Пример прост, чтобы продемонстрировать, как React и Redux работают вместе. ADD
const. Затем определите создателя действия addMessage()
который создает действие для добавления сообщения. Вам нужно передать message
этому создателю действия и включить сообщение в возвращаемое action
. Затем создайте редуктор, называемый messageReducer()
который обрабатывает состояние для сообщений. Начальное состояние должно равняться пустующему массиву. Этот редуктор должен добавить сообщение в массив сообщений, находящихся в состоянии, или вернуть текущее состояние. Наконец, создайте свой магазин Redux и передайте ему редуктор. ADD
должен существовать и содержать значение, равное строке ADD
'
testString: 'assert(ADD === "ADD", "The const ADD
should exist and hold a value equal to the string ADD
");'
- text: 'Создатель действия addMessage
должен возвращать объект с type
равным ADD
и сообщение, равное сообщению, которое передается.'
testString: 'assert((function() { const addAction = addMessage("__TEST__MESSAGE__"); return addAction.type === ADD && addAction.message === "__TEST__MESSAGE__"; })(), "The action creator addMessage
should return an object with type
equal to ADD
and message equal to the message that is passed in.");'
- text: messageReducer
должен быть функцией.
testString: 'assert(typeof messageReducer === "function", "messageReducer
should be a function.");'
- text: 'Магазин должен существовать и иметь исходное состояние, установленное в пустой массив.'
testString: 'assert((function() { const initialState = store.getState(); return typeof store === "object" && initialState.length === 0; })(), "The store should exist and have an initial state set to an empty array.");'
- text: 'Отправка addMessage
в хранилище должна неизменно добавлять новое сообщение в массив сообщений, хранящихся в состоянии.'
testString: 'assert((function() { const initialState = store.getState(); const isFrozen = DeepFreeze(initialState); store.dispatch(addMessage("__A__TEST__MESSAGE")); const addState = store.getState(); return (isFrozen && addState[0] === "__A__TEST__MESSAGE"); })(), "Dispatching addMessage
against the store should immutably add a new message to the array of messages held in state.");'
- text: 'messageReducer
должен возвращать текущее состояние, если messageReducer
с любыми другими действиями.'
testString: 'assert((function() { const addState = store.getState(); store.dispatch({type: "FAKE_ACTION"}); const testState = store.getState(); return (addState === testState); })(), "The messageReducer
should return the current state if called with any other actions.");'
```