首页 > 解决方案 > 如何在reactjs中静音状态

问题描述

我在 reactjs 状态管理中遇到问题。每次加载组件时,它都会从缓存中加载数据。我对此进行了研究,发现状态是不可变的。我想问一下如何使用不可变状态。目前,就像我在构造函数中使用了一个空数组,然后我在组件中调用了一个 api 并将该状态设置为响应,但直到除非 Indont 清除缓存,否则状态不会显示数据

指导我在这里犯错的地方或如何使状态不受影响

标签: reactjsstate-managementreact-state-management

解决方案


改变一个对象:使用 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 方库来更好地掌握这个主题。


推荐阅读