React 面试题
目录

React 中 mapStateToProps 和 mapDispatchToProps 的作用是什么?

· 约 4 分钟读完 · 第 131 / 174 章

推荐答案

mapStateToProps 和 mapDispatchToProps 是 React-Redux 中用于连接 React 组件与 Redux 存储的两个重要函数。

  • mapStateToProps: 该函数用于将 Redux 存储中的状态映射到 React 组件的 props 中。它接收整个 Redux 状态作为参数,并返回一个对象,该对象的键值对将作为 props 传递给 React 组件。

  • mapDispatchToProps: 该函数用于将 Redux 的 action creators 映射到 React 组件的 props 中。它接收 dispatch 函数作为参数,并返回一个对象,该对象的键值对将作为 props 传递给 React 组件,通常这些 props 是函数,用于触发 Redux 的 action。

本题详细解读

mapStateToProps

mapStateToProps 是一个可选函数,用于从 Redux 存储中选择组件所需的状态。它的主要作用是将 Redux 存储中的状态映射到组件的 props 中,使得组件可以访问这些状态。

在这个例子中,mapStateToProps 函数从 Redux 存储中提取 todos 状态,并将其作为 todos prop 传递给组件。

mapDispatchToProps

mapDispatchToProps 也是一个可选函数,用于将 action creators 绑定到组件的 props 中。它的主要作用是将 Redux 的 dispatch 函数与 action creators 绑定,使得组件可以通过调用这些 props 来触发 Redux 的 action。

在这个例子中,mapDispatchToProps 函数将 addTodo action creator 绑定到组件的 addTodo prop 中。当组件调用 this.props.addTodo('Learn Redux') 时,Redux 会触发相应的 action。

使用 connect 函数

mapStateToProps 和 mapDispatchToProps 通常与 connect 函数一起使用,将 Redux 存储与 React 组件连接起来。

在这个例子中,TodoList 组件通过 connect 函数与 Redux 存储连接,mapStateToProps 和 mapDispatchToProps 分别将 todos 状态和 addTodo action creator 映射到组件的 props 中。