freeCodeCamp/curriculum/challenges/spanish/03-front-end-libraries/react-and-redux/map-dispatch-to-props.spani...

64 lines
3.9 KiB
Markdown

---
id: 5a24c314108439a4d4036146
title: Map Dispatch to Props
challengeType: 6
isRequired: false
videoUrl: ''
localeTitle: Mapa de Despacho a Puntales
---
## Description
<section id="description"> La función <code>mapDispatchToProps()</code> se usa para proporcionar creadores de acción específicos a sus componentes React para que puedan enviar acciones contra el almacén de Redux. Es similar en estructura a la función <code>mapStateToProps()</code> que escribió en el último desafío. Devuelve un objeto que asigna acciones de despacho a nombres de propiedades, que se convierten en <code>props</code> componentes. Sin embargo, en lugar de devolver una parte del <code>state</code> , cada propiedad devuelve una función que llama el <code>dispatch</code> con un creador de acción y cualquier información de acción relevante. Tiene acceso a este <code>dispatch</code> porque se pasa a <code>mapDispatchToProps()</code> como un parámetro cuando define la función, al igual que pasó el <code>state</code> a <code>mapStateToProps()</code> . Detrás de escena, React Redux está utilizando <code>store.dispatch()</code> Redux para realizar estos despachos con <code>mapDispatchToProps()</code> . Esto es similar a cómo utiliza <code>store.subscribe()</code> para los componentes que se asignan al <code>state</code> . Por ejemplo, tiene un creador de acción <code>loginUser()</code> que toma un <code>username</code> como una carga útil de acción. El objeto devuelto desde <code>mapDispatchToProps()</code> para este creador de acción se vería así: <blockquote> { <br> submitLoginUser: function (nombre de usuario) { <br> dispatch (loginUser (nombre de usuario)); <br> } <br> } </blockquote></section>
## Instructions
<section id="instructions"> El editor de código proporciona un creador de acción llamado <code>addMessage()</code> . Escriba la función <code>mapDispatchToProps()</code> que toma el <code>dispatch</code> como un argumento, luego devuelve un objeto. El objeto debe tener una propiedad <code>submitNewMessage</code> establecida en la función de envío, que toma un parámetro para que el nuevo mensaje se agregue cuando distribuya <code>addMessage()</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>addMessage</code> debe devolver un objeto con claves de <code>type</code> y <code>message</code> .
testString: 'assert((function() { const addMessageTest = addMessage(); return ( addMessageTest.hasOwnProperty("type") && addMessageTest.hasOwnProperty("message")); })(), "<code>addMessage</code> should return an object with keys <code>type</code> and <code>message</code>.");'
- text: <code>mapDispatchToProps</code> debería ser una función.
testString: 'assert(typeof mapDispatchToProps === "function", "<code>mapDispatchToProps</code> should be a function.");'
- text: <code>mapDispatchToProps</code> debe devolver un objeto.
testString: 'assert(typeof mapDispatchToProps() === "object", "<code>mapDispatchToProps</code> should return an object.");'
- text: El envío de <code>addMessage</code> con <code>submitNewMessage</code> desde <code>mapDispatchToProps</code> debe devolver un mensaje a la función de envío.
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 <code>addMessage</code> with <code>submitNewMessage</code> from <code>mapDispatchToProps</code> should return a message to the dispatch function.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='jsx-seed'>
```jsx
const addMessage = (message) => {
return {
type: 'ADD',
message: message
}
};
// change code below this line
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>