Как отключить звук в реактиве?

У меня возникла проблема в управлении состоянием реагирования. Каждый загруженный компонент загружает данные из кэша. Я провел исследование по этому вопросу и обнаружил, что это состояние является неизменным. Я хочу спросить, как использовать иммутирование состояния. В настоящее время это похоже на то, что я взял пустой массив в состоянии в конструкторе, затем я вызвал api in компонент, который будет монтировать и устанавливать это состояние в ответ, но до тех пор, пока Indont не очистит кэш, состояние не показывает данные

Укажи мне, где я здесь делаю ошибку, или как я могу имитировать состояние

1 ответ

Мутирование объекта: используйте 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

this.state и this.setState({}) в React уже неизменны.

Вы также можете попробовать стороннюю библиотеку immutable.js, чтобы лучше понять эту тему.

Другие вопросы по тегам