mapDispatchToProps()
é usada para fornecer criadores de ações específicas para seus componentes React para que eles possam despachar ações contra o armazenamento Redux. É semelhante em estrutura à função mapStateToProps()
você escreveu no último desafio. Ele retorna um objeto que mapeia ações de despacho para nomes de propriedades, que se tornam props
componentes. No entanto, em vez de retornar um pedaço de state
, cada propriedade retorna uma função que chama dispatch
com um criador de ações e quaisquer dados de ação relevantes. Você tem acesso a este dispatch
porque é passado para mapDispatchToProps()
como um parâmetro quando você define a função, assim como você passou de state
para mapStateToProps()
. Nos bastidores, o React Redux está usando o store.dispatch()
do Redux para conduzir esses despachos com mapDispatchToProps()
. Isso é semelhante a como ele usa store.subscribe()
para componentes que são mapeados para o state
. Por exemplo, você tem um criador de ações loginUser()
que usa um username
como uma carga útil de ação. O objeto retornado de mapDispatchToProps()
para este criador de ações seria algo como: {
submitLoginUser: function (username) {
despacho (loginUser (username));
}
}
addMessage()
. Escreva a função mapDispatchToProps()
que usa dispatch
como argumento e retorna um objeto. O objeto deve ter uma propriedade submitNewMessage
configurada para a função dispatch, que recebe um parâmetro para a nova mensagem adicionar quando envia addMessage()
. addMessage
deve retornar um objeto com type
e message
chaves.
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
deve ser uma função.
testString: 'assert(typeof mapDispatchToProps === "function", "mapDispatchToProps
should be a function.");'
- text: mapDispatchToProps
deve retornar um objeto.
testString: 'assert(typeof mapDispatchToProps() === "object", "mapDispatchToProps
should return an object.");'
- text: Despachar addMessage
com submitNewMessage
de mapDispatchToProps
deve retornar uma mensagem para a função de dispatch.
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.");'
```