我不明白为什么,在我定义React类的文件中,分配给导入的变量和永远不会变异的变量仍然会发生变化。
import statuses from '../statuses'; // array of 6 items
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.statuses = statuses;
}
render() {
const statusOptions = this.statuses;
if (statuses.length === statusOptions.length) statusOptions.push(obj);
console.log(statuses.length); // 7 (?!?!)
}
}
我根本不知道为什么statuses
会更新,以及为什么它会像statusOptions
一样发生变异。 (为了清楚起见,我还记录了statuses
本身,果然,obj
已被推送到数组。
答案 0 :(得分:3)
statuses
,this.statuses
和statusOptions
所有引用指向同一个对象。
推送到一个,它将出现在所有三个中。
答案 1 :(得分:1)
所有三个变量都相同,共享相同的参考。您可以使用:
this.statuses =JSON.parse(JSON.stringify(statuses))
var a=[1,2,3]
var b=a;
c=JSON.parse(JSON.stringify(a));
a.push(4);
console.log(b);
console.log(c);
这与this.statuses=statuses
类似,但更改一个变量不会影响另一个变量。