reactjs - 部分 redux 状态重新渲染(不必要的)整个反应组件
问题描述
我的 redux 状态部分(reducer)之一是filters
reducer,用于存储每页的过滤器设置。它是 key-object 结构,所以它看起来像这样:
{
dashboard: {
minDate: '2017-01-01',
maxDate: '2019-01-01',
//... other filters
},
otherPageKey: {
//... other filters
}
}
我的仪表板页面很大,但它包含select
从 reducer: 读取的值filters.dashboard.minDate
。负责连接的代码:
function mapStateToProps({
filters
}) {
return {
filters: filters.dashboard
};
}
现在 - 每当我们从该选择组件中选择新日期时,整个filters
树都会更改,因此整个仪表板组件正在重新渲染。我怎么解决这个问题?预期的结果是,只有select
属性被用户更改的组件才应该重新渲染。
解决方案
更多代码会有所帮助,但这通常是由父组件(在本例中为仪表板)检测到的状态或道具引起的。
这可能是由几件事引起的。
- 您正在映射到父组件而不是特定的子组件。这意味着父组件正在检测更改并因此重新渲染。您是否
mapStateToProps
在仪表板组件中,而不是仅在您的选择组件中? connect
或的不当使用mapDispatchToProps
。查看这篇文章了解更多信息。
同样,更多代码会有所帮助,但我希望这会有所帮助。
推荐阅读
- python - 在python中传递变量时将数字匹配为字符串开头的字符串
- javascript - 为什么 trigger() 会触发 select() 处理程序 3 次?
- mysql - 表中新增一个不允许为空的字段,然后改成允许为空,导致查询错误
- python - 如何确定 .npz 文件的形状/大小
- python - 从 Windows 相机获取文件位置和名称
- python - Matplotlib errorbar bug with capsize + ecolor?
- javascript - React 功能组件正在无限次重新渲染
- javascript - vee-validate@4.x - 如何手动验证字段
- php - Maatwebsite\Excel\Facades\Excel 正在显示和使用 Maatwebsite\Excel\Concerns\FromCollection;显示未定义类型
- python - 使用 patchify 库创建补丁时出现问题