首页 > 解决方案 > 为什么在应用程序中使用 redux 时不建议使用反应状态(不被认为是最佳实践)

问题描述

class Wrap extends Component{
  constructor(props) {
    super(props);
    this.state={
      index: 0,
      selectedIndex: 0
    };
  }
  getSelectedIndex(index){
    this.setState({selectedIndex: index});
  }

  switch(index) {
    case 0:
    <Apple selectedIndex={this.getSelectedIndex.bind(this)}/>;
    case 1:
    <Orange selectedIndex={this.state.selectedIndex}/>;
    case 2:
    <Pumpkin selectedIndex={this.state.selectedIndex}/>;
  }    
}

这里不建议在反应状态下使用 selectedIndex。它应该移动到 redux 商店。为什么不是最佳实践,当它只在父子组件中需要时。

标签: reactjsreact-nativereduxreact-reduxredux-form

解决方案


根据官方文档,使用本地状态很好,或者您可以将其全部放入 redux 存储中。它取决于您和您的项目的需求。

这里要考虑的关键事项:

确定应将哪种数据放入 Redux 的一些常见经验法则:

  • 应用程序的其他部分是否关心这些数据?

  • 您是否需要能够基于这些原始数据创建进一步的派生数据?

  • 是否使用相同的数据来驱动多个组件?

  • 能够将此状态恢复到给定的时间点(即时间旅行调试)对您有价值吗?

  • 您是否要缓存数据(即,如果它已经存在,则使用状态中的内容而不是重新请求它)?


推荐阅读