@Yaroslavv

Клонирование часть state до update?

По фокусу на инпут пытаюсь клонировать this.state.collection и записать его в oldCollection,
после изменения collection,меняется следом oldCollection
//исходное состояние
        this.state = {
            collection: {item:true}
            oldCollection:null
        };

    onFocus() {//копирую по фокусу
        this.setState({
          oldCollection: this.state.collection
        });
    }

    itemChange(event) {//меняю исходный объект
        let collection = {item:false}
        this.setState({
            collection
        });
       console.log(this.state.oldCollection)//{item:false}
    }

почему oldCollection поменял данные следом и как исправить это,Спасибо!
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
@Yaroslavv Автор вопроса
this.setState({
 oldCollection: JSON.parse(JSON.stringify(collection))
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@bender1000
Как насчёт oldCollection: {...this.state.collection}
Ответ написан
dimakrsna
@dimakrsna
Front-end develorer
Попробуйте посмотреть в сторону shouldComponentUpdate(nextProps, nextState). Также в некоторых случаях подойдет и redux в одном компоненте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы