Javascript 为什么克隆JS对象超过1级深度会破坏Redux中的不变性?

Javascript 为什么克隆JS对象超过1级深度会破坏Redux中的不变性?,javascript,reactjs,ecmascript-6,redux,Javascript,Reactjs,Ecmascript 6,Redux,以下面一个简单的深嵌套JS对象为例: customer: { email: '', address: { addressLines: [''], postcode: '', city: '' } } 以下更新不会触发ReduxImmutableState不变量中的状态突变: let objectToUpdate = { address: { addressLines: customer.address.add

以下面一个简单的深嵌套JS对象为例:

customer: {
    email: '',
    address: {
        addressLines: [''],
        postcode: '',
        city: ''
    }
}
以下更新不会触发ReduxImmutableState不变量中的状态突变:

let objectToUpdate =  {
  address: {
    addressLines: customer.address.addressLines,
    postcode: value,
    city: customer.address.city
  }
};
customer = Object.assign({}, customer, objectToUpdate);
其中,由于此更新会触发状态突变错误:

customer.address['postcode'] = value;
而一个层次的深度不会:

customer['email'] = value;
当需要对超过1级的状态执行更新时,唯一的方法是使用或滚动您自己的


谢谢。Object.assign不会制作深度副本。有几个替代方案你可以考虑,例如提到。还有


这里有一篇好文章:

Object.assign不会进行深度复制。有几个替代方案你可以考虑,例如提到。还有


这里有一篇好文章:

因为Object.assign仅对当前对象工作而不是其嵌套对象因为Object.assign仅对当前对象工作而不是其嵌套对象