reactjs - 为什么在应用程序中使用 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 商店。为什么不是最佳实践,当它只在父子组件中需要时。
解决方案
根据官方文档,使用本地状态很好,或者您可以将其全部放入 redux 存储中。它取决于您和您的项目的需求。
这里要考虑的关键事项:
确定应将哪种数据放入 Redux 的一些常见经验法则:
应用程序的其他部分是否关心这些数据?
您是否需要能够基于这些原始数据创建进一步的派生数据?
是否使用相同的数据来驱动多个组件?
能够将此状态恢复到给定的时间点(即时间旅行调试)对您有价值吗?
您是否要缓存数据(即,如果它已经存在,则使用状态中的内容而不是重新请求它)?
推荐阅读
- html - 如何使用node.js将数据从html发送到three.js?
- google-sheets - 在电子表格中创建评论时,Google Drive API 会忽略锚参数
- artifactory - 自动部署到 Artifactory Distribution Repo
- python - 从 Python 中的 `file` 确定 `file.read()` 的结果类型
- git - Git - 将未提交的更改保存到不同的分支
- node.js - 从 Lambda 创建 Elasticsearch 映射时出现“授权异常”
- javascript - 尝试在 MSSQL 中使用 FOR JSON 并尝试读取根键时接收未定义
- youtube - 将 youtube 视频作为全息图播放
- javascript - Power BI - 从发布请求中获取数据
- c++ - C++ 标准是否保证插入关联容器失败不会修改右值引用参数?