如何处理 redux 存储所持有的数据中不断变化的属性
How to handle constantly changing properties in data held by redux stores?
我需要将大约 5000 个项目呈现为表格。我正在使用 redux 来保存它们,这些项目具有持续时间属性,随着时间的推移,持续时间属性应该更新。
作为第一次剪切,我每 5 秒从服务器推送一次持续时间,这没什么大问题,因为表格是分页的,所以并非所有这些项目都呈现到 DOM。我对性能没有问题,但是我正在引入更多功能,这些功能需要我停止这样做,而且这是一种浪费,因为即使核心数据没有改变,我仍然在推动它,因为持续时间已经改变。
我应该仅在添加新项目或删除项目时将项目推送到客户端。但不知何故,我需要在客户端更新持续时间。我可以想到几种方法来做到这一点,例如有一个在后台运行的定时服务,并将操作发送到 redux 存储以更新所有项目的持续时间。但不确定这是否是一个好方法,有人可以建议吗?
是的,定期调度操作的后台服务是执行此操作的明显方法。如有必要,您可以通过侦听对 Redux 状态的更改来启用/禁用服务自身。
正如我在注释中所述,您可以在组件的render()
方法中计算持续时间。 即您当前的代码是:
render() {
return this.props.items.map(item => <Duration duration={item.duration}>)
}
你像new Date().getTime() - item.created_at
一样计算持续时间.因此,您可以计算持续时间 render()
并每 10 秒强制更新组件:
componentDidMount() {
setInterval(this.forceUpdate.bind(this), 10000); //re-render component every 10 seconds
}
render() {
const now = new Date().getTime();
return this.props.items.map(item => <Duration duration={now - item.created_at}>)
}
相关文章:
- 序列化数据属性中对象的最可靠方法
- jQuery最近父级的数据属性选择器
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 数据属性仅在切换设备模式下工作
- 函数jquery.html()不提供数据属性集值
- 在数据属性上进行下拉自动选择
- JavaScript-获取数据属性的值返回未定义的值
- 如何替换数据属性中的特定字符串单词
- 使用数据属性将HTML数据复制到另一个元素
- 带有CSS的数据属性就没那么有用了
- 查找所有TD标签并读取其数据属性
- 使用jQuery获取第N个元素的数据属性值
- 使用自定义数据属性或将数据绑定到处理程序来处理事件
- 数据属性有没有更干净的方法
- 是否可以使用CSS分配数据属性
- 根据jquery数据属性值进行查询
- 使用jQuery在select选项上设置HTML数据属性
- 使用Javascript而不是html数据属性配置Parsley
- 语义UI下拉选项数据属性
- 无法将 json 数据添加到 pyjade 中的数据属性