reactjs - 如何在reactjs中静音状态
问题描述
我在 reactjs 状态管理中遇到问题。每次加载组件时,它都会从缓存中加载数据。我对此进行了研究,发现状态是不可变的。我想问一下如何使用不可变状态。目前,就像我在构造函数中使用了一个空数组,然后我在组件中调用了一个 api 并将该状态设置为响应,但直到除非 Indont 清除缓存,否则状态不会显示数据
指导我在这里犯错的地方或如何使状态不受影响
解决方案
改变一个对象:使用 Object.assign({}, ...)
var yourCar = {
color: 'red',
.. the same as neighboursCar
};
var neighboursCar = {
color: 'red',
... the same as yourCar
};
yourCar.color = 'blue'; // reference stays the same!
var yourCarRepainted = Object.assign({}, yourCar, { color: 'blue' });
yourCarRepainted === yourCar; // false
改变数组:使用 [].concat
var list = [1, 2, 3];
var list = [1, 2, 3];
list[1] = 4;
var list = [1, 2, 3];
var changedList = [].concat(list);
changedList[1] = 4;
var list = [1, 2, 3];
var changedList = [].concat(list);
changedList[1] = 2;
list === changedList; // false
React 中的this.state 和 this.setState({})已经是不可变的。
您还可以尝试 immutable.js 3rd 方库来更好地掌握这个主题。
推荐阅读
- c# - 有没有办法根据 Light Mode 和 DarkMode 在 iOS 中动态设置 EntryCell 的背景?
- arrays - 获取长度为 X 的对象中的第一个数组
- flowtype - 地图的流类型?
- sql - 基于月份和年份的 Postgres 计数
- react-native - Expo + React Native 与 PayU Money 支付网关
- github - 如何使用 octokit.net API 创建 GitHub 标签
- html - 如何根据各列中项目的内容制作等宽项目?
- vbscript - 带有 VBScript 的 SAS 企业指南。循环通过 SAS 程序卡住
- jms - Gatling:模拟期间没有发送请求,不会生成报告
- android - 在Android中使用库时重复类