javascript - 为次要 UI 更新反应实例值或状态
问题描述
在我看来,每当我调用setState
React 组件时,我相信至少需要做一些工作来刷新组件。将每个重要的动态变量存储在状态中是我迄今为止在社区中看到的一个利基。
searching
想象一下这个在服务器请求尚未返回时将变量设置为 true 的非平凡代码。
fetchSearch = async (food) => {
this.searching = true;
const request = await client.get(`http://localhost:8081/food?q=${food}`);
const results = await request.json();
this.setState((state) => {
this.searching = false;
return { searchResult: results }
});
}
<Input showSpinner={this.searching}</Input>
正如您可能已经猜到的那样, 的值this.searching
是是否应用加载 UI 动画 CSS 类的决定因素。
我的问题是,与使用实例值相比,是否真的值得通过刷新组件this.searching
的额外工作来设置状态?我可能会遇到什么麻烦?例如,除了拥有中央商店之外,我还能获得什么好处?
解决方案
由于您已经在更新 的状态searchResult
,因此更新另一个字段searching
不会导致额外的重新渲染。
如果您的 UI 依赖于searching
您,则需要将它放在 中state
,否则 react 将不知道该searching
值已更改。
React 已经非常高效了,在你真正遇到任何性能问题之前,无需过度思考。
推荐阅读
- python - 如何使用python和opencv在图像中划分接触的cicles
- javascript - WordPress JWT - 错误验证 (401)
- python - 如何获取以某个单词结尾的不同字符串的所有值
- reactjs - 如何在反应中将道具传递给子类
- javascript - ES6“Import()”问题“MODULE_NOT_FOUND”[Webpack - NodeJS]
- r - 向量之间的动态相关性(带采样)
- azure - 无法更新 Azure 应用程序网关 - 错误:禁用的规则“920300”未知
- python - pyspark 1.6中pandas quantile和cut的替代方法是什么
- apache-kafka - 触发后取消 Kafka Streams 上的标点符号
- c# - Nuget添加应用程序中已经存在的相同包