我正在使用Javascript / ReactJS代码,我正在打印Object(Obj),其中包含键作为id和值作为控制台中相应键的状态(true / false)。打印所需的对象,但只要打开该对象,它就会自动更改其值。
这个对象的第一个属性是真的,但是当我打开它时,它会变错。
我在render方法之外声明了Object(Obj),因为它每次都需要或不呈现JSX。但它没有用。
render(){
return defaultApp(templates).map(template=>{
Obj[`${template._id}`] = false;
return <Apps id={template._id}
onClick={this.handleToggle.bind(this)}>
<h2>{template.title}</h2>
</Apps>
});
}
handleToggle = (e)=>{
var selectedAppId = e.target.id?e.target.id:e.target.parentNode.id;
if(!isEmpty(Obj)) {
Object.keys(Obj).forEach((id)=>{
if(selectedAppId===id){
Obj[selectedAppId] = !Obj[selectedAppId];
console.log(Obj);
this.setState({currentAppId:id,AppsStatus:Obj});
}});
}
我希望看到相同的Object值,无论是否打开它。
控制台JSON.stringify(obj)
检查确切的对象值。
记住对象是引用,因此如果在程序的任何位置更改其键值,则更改将反映在整个代码中,因为所有变量都存储对该对象的引用。