reactjs - 如何在 React Redux 中创建临时状态?

标签 reactjs redux

我已经使用 Redux 一个月了,当项目变得非常大时,似乎没有必要将整个应用程序暴露给每个Reducer 的所有值。有没有好的方法来创建临时状态或为组件创建单独的状态?

我的想法是错误的还是这样的结构是有原因的?

最佳答案

我假设“每个 reducer 的值”指的是整个应用程序状态。

您当然可以分割您的状态并仅将必要的部分公开给特定组件。这就是 react-redux 绑定(bind)中的 connect 方法的用途。 connect 接受一个函数(例如 mapStateToProps),该函数反过来接受您的整个应用程序状态,并仅公开您指定为要“连接”到 redux 的组件的 props。

例如,假设您有一个像这样的简单 React 组件,它显示用户的姓名和地址:

var myComponent = React.createClass({
  render: function() {
    return (
      <div>{Name from redux state goes here}</div>
      <div>{Address from redux state goes here}</div>
    );
  }
});

显然,您不需要将整个应用程序状态发送到此组件,只需将包含用户姓名和地址的部分发送即可。所以你可以像这样使用connect:

// the "state" param is your entire app state object.  
function mapStateToProps(state) {
  return {
    name: state.name,
    address: state.address
  }
}

var connectedComponent = connect(mapStateToProps)(myComponent);

包装后的myComponent现在实际上看起来像这样:

var myComponent = React.createClass({
  propTypes: {
   name: React.PropTypes.string // injected by connect
   address: React.PropTypes.string // injected by connect  
  },

  render: function() {
    return (
      <div>{this.props.name}</div>
      <div>{this.props.address}</div>
    );
  }
});

关于reactjs - 如何在 React Redux 中创建临时状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34140896/

相关文章:

reactjs - 通过 react 中的嵌套子组件进行映射

reactjs - 无法读取未定义 react 17 的属性 'map'

javascript - 如何配置 webpack 以将自定义字体加载到故事书中?

javascript - 基于 promise 的操作成功,数据得到解决,但我收到一条错误消息

javascript - 简单的 Redux 计数器组件实现

html - css 网格上没有边距/填充底部?

javascript - 如何使用react-router v6在组件内传递props

reactjs - 如何使用 redux 更新状态中的 1 个项目?

javascript - 如何将 reduce-reducers 与 combineReducers 一起使用

javascript - 在 React Native Redux 中调度导入的函数