--- id: 5a24c314108439a4d4036146 title: Map Dispatch to Props challengeType: 6 isRequired: false videoUrl: '' localeTitle: Отправка карты на реквизит --- ## Description
Функция mapDispatchToProps() используется для предоставления конкретным создателям действий вашим компонентам React, чтобы они могли отправлять действия против магазина Redux. Он похож по структуре на mapStateToProps() вы написали в последнем вызове. Он возвращает объект, который сопоставляет действия отправки с именами свойств, которые становятся компонентами props . Однако вместо возврата части state каждое свойство возвращает функцию, которая вызывает dispatch с создателем действия и любыми соответствующими действительными данными. У вас есть доступ к этой dispatch потому что она передается в mapDispatchToProps() в качестве параметра, когда вы определяете функцию, точно так же, как вы передали state mapStateToProps() . За кулисами React Redux использует store.dispatch() Redux для store.dispatch() этих рассылок с помощью mapDispatchToProps() . Это похоже на то, как он использует store.subscribe() для компонентов, которые отображаются в state . Например, у вас есть создатель действия loginUser() который принимает username в качестве полезной нагрузки. Объект, возвращенный из mapDispatchToProps() для этого создателя действия, будет выглядеть примерно так:
{
submitLoginUser: function (username) {
отправка (loginUser (имя пользователя));
}
}
## Instructions
Редактор кода предоставляет создателя действия, называемого addMessage() . Напишите функцию mapDispatchToProps() которая принимает dispatch в качестве аргумента, а затем возвращает объект. Объект должен иметь свойство submitNewMessage установленное для функции отправки, которое принимает параметр для добавления нового сообщения при отправке addMessage() .
## Tests
```yml tests: - text: addMessage должен возвращать объект с type ключа и message . testString: 'assert((function() { const addMessageTest = addMessage(); return ( addMessageTest.hasOwnProperty("type") && addMessageTest.hasOwnProperty("message")); })(), "addMessage should return an object with keys type and message.");' - text: mapDispatchToProps должна быть функцией. testString: 'assert(typeof mapDispatchToProps === "function", "mapDispatchToProps should be a function.");' - text: mapDispatchToProps должен возвращать объект. testString: 'assert(typeof mapDispatchToProps() === "object", "mapDispatchToProps should return an object.");' - text: Отправка addMessage с submitNewMessage из mapDispatchToProps должна вернуть сообщение функции отправки. testString: 'assert((function() { let testAction; const dispatch = (fn) => { testAction = fn; }; let dispatchFn = mapDispatchToProps(dispatch); dispatchFn.submitNewMessage("__TEST__MESSAGE__"); return (testAction.type === "ADD" && testAction.message === "__TEST__MESSAGE__"); })(), "Dispatching addMessage with submitNewMessage from mapDispatchToProps should return a message to the dispatch function.");' ```
## Challenge Seed
```jsx const addMessage = (message) => { return { type: 'ADD', message: message } }; // change code below this line ```
## Solution
```js // solution required ```