reactjs - 使用 setState 和 redux 操作时如何避免重复的 render() 调用
问题描述
作为标题,我发现以下代码将进行重复的 render() 调用:
pressBtn = () => {
console.warn("call completeUserLogin");
// setState is going to update component state.
this.setState({counter1: this.state.counter1+1});
// counterTwoUpdate is going to update redux state.
this.props.counterTwoUpdate(this.props.counter2+1);
}
这种情况就像我两次调用 setState 一样。但是两个 setState 可以很容易地与 1 个语句合并,例如:
// Before changes (render() call two times)
this.setState({counter1: this.state.counter1+1});
this.setState({counter2: this.state.counter2+1});
// After changes (render() call only once)
this.setState({
counter1: this.state.counter1+1,
counter2: this.state.counter2+1
});
合并 setState 和 redux 操作的任何技巧,以便它只会进行 1 个 render() 调用?非常感谢
解决方案
如果你想从两个不同的地方更新这两个计数器,你会render()
因为两次不同的更新而导致两次调用方法。首先,我会建议你不要将可以通过 props 实现的东西保存在 state 中,例如 redux 全局 state。其次,我建议您同时使用setState()
这两个计数器,或者调用将更新相关的操作。然后,您将只调用render()
一次。
推荐阅读
- c# - 如何在 NSUserDefaults 中存储 iOS 启动自定义方案数据以从 Unity 中读取
- reactjs - 如何创建一个名为 Tail 的组件,该组件接受一个数字并呈现最后 N 个孩子
- angular - 从服务器端资源方法获取图像后,如何将背景图像设置为角度 5 中的 div 标签?
- django - Grappelli admin 中的 GenericForeignKey:过滤 content_type 以仅显示相关模型
- java - Jmeter - 双数据类型的计数器
- java - 如何防止我的 jsp 应用程序使用跨框架脚本?
- javascript - 显示两行和每行四个项目
- python - 当 django 中存在回溯错误时,我在标准输出中获取日志 2 次
- javascript - 如何在 Node.Js 中的 forEach 中使用 Select Query?
- php - 在时间/日期 PHP 和 ACF 方程中添加额外的一天(对于 WordPress 网站)