环境:ReactJs
描述:在state里面有2个对象:a=[1,2,3,4]; b=[1,2,3,4]。【其中,数字1,2,3,4均表示一个对象】
然后更改b=[1,2],a没动。结果发现a也变成了a=[1,2]。
分析:原因是Js变量指向同一块内存,你在改变数组的时候,要把它深拷贝过来。
可用的解决办法是:a= JSON.stringify([1,2,3,4]),这样就没问题了。用的时候JSON.parse(a)解析。
或者另外一种类似的情况:a={"id": 1, "type": 0},b=a;这样也会让a和b指向同一个对象。而如果改为a={"id": 1, "type": 0};b={};b=a;这样以后再改b的值就不会影响到a了。