0

我正在使用 Javascript/ReactJS 代码,我正在打印 Object(Obj),其中包含作为 id 的键和作为控制台中相应键的状态(true/false) 的值。打印了所需的对象,但是一旦我打开该对象,它就会自动更改其值。

这是代码

这个对象的第一个属性是 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});
            }});
          }

无论是否打开它,我都想看到相同的对象值。

4

1 回答 1

0

控制台JSON.stringify(obj)检查确切的对象值。

记住对象是引用,因此如果它们的键值在程序的任何点发生更改,更改将反映在整个代码中,因为所有变量都存储对该对象的引用。

于 2019-04-14T07:55:53.693 回答