React得setState使用push、splice等数组操作新数组为什么也会影响原数组?

问题描述

题目描述得不是很清楚. 在这里重新梳理.
虽然知道pushsplice这些操作会影响原数组. 但是经过state状态存储依然会相互影响吗?
假定现在存在一个数组array, 我通过setState操作了newArray: this.state.array
后续我改变newArray也会影响到array的值. 有什么办法解决吗?

问题出现的环境背景及自己尝试过哪些方法

相关代码

componentDidMount() {
    let array = [1, 2, 3];
    this.setState({
        newArray: this.state.array
    })
}

handleChange() {
    let { newArray } = this.state; 
    newArray.push(4);
    
    console.log(array);
}

你期待的结果是什么?实际看到的错误信息又是什么?

上面结果会输出[1, 2, 3, 4].请问真的是因为push、splice改变原数组导致的吗?有什么办法可以解决?谢谢

阅读 4.8k
1 个回答
handleChange() {
    let array = this.state.array;
    let newArray = [...array];
    newArray.push(4);
    console.log(array, newArray);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题