Files
freeCodeCamp/curriculum/challenges/chinese/03-front-end-libraries/react-and-redux/map-state-to-props.md
camperbot 5075f14248 chore(i18n,learn): processed translations (#41378)
* chore(i8n,learn): processed translations

* Update curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-u-tag-to-underline-text.md

Co-authored-by: Randell Dawson <5313213+RandellDawson@users.noreply.github.com>

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
Co-authored-by: Randell Dawson <5313213+RandellDawson@users.noreply.github.com>
2021-03-05 07:43:24 -08:00

70 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: 5a24c314108439a4d4036145
title: 映射 State 到 Props
challengeType: 6
forumTopicId: 301433
dashedName: map-state-to-props
---
# --description--
`Provider`可向 React 组件提供 `state``dispatch` ,但必须确切地指定所需要的 state 和 actions 以确保每个组件只能访问所需的 state。 完成这个任务,需要创建两个函数:`mapStateToProps()``mapDispatchToProps()`
在这两个函数中,声明 state 中函数所要访问的部分及需要 dispatch 的创建 action 的函数。 完成这些,我们就可以迎接下一个挑战,学习如何使用 React Redux 的 `connect` 方法来把函数连接到组件了。
**注意:** 在幕后React Redux 用 `store.subscribe()` 方法来实现 `mapStateToProps()`
# --instructions--
创建 `mapStateToProps()` 函数, 以 `state` 为参数,然后返回一个对象,该对象把 state 映射到特定属性名上, 这些属性能通过 `props` 访问组件。 由于此示例把 app 应用的整个状态保存在单一数组中,可把整个状态传给组件。 在返回的对象中创建 `messages` 属性,并设置为 `state`
# --hints--
常量 `state` 应为空数组。
```js
assert(Array.isArray(state) && state.length === 0);
```
`mapStateToProps` 应为函数。
```js
assert(typeof mapStateToProps === 'function');
```
`mapStateToProps` 应返回一个对象。
```js
assert(typeof mapStateToProps() === 'object');
```
把 state 数组传入 `mapStateToProps` 后应返回赋值给 `messages` 键的数组。
```js
assert(mapStateToProps(['messages']).messages.pop() === 'messages');
```
# --seed--
## --seed-contents--
```jsx
const state = [];
// Change code below this line
```
# --solutions--
```jsx
const state = [];
// Change code below this line
const mapStateToProps = (state) => {
return {
messages: state
}
};
```