如何将键值对添加到状态对象 React

Ann*_*ine 1 javascript ecmascript-6 reactjs

我正在努力在 React 中设置我的一个对象的状态。我拥有的代码:

export class RRHN_App extends React.Component {
   constructor(props) {
      super(props);
      this.startLoadingItems();
      this.fetchData();
      this.state = {
         items: [],
         itemStatus : [],
         selectedItem: null,
         prefsDialog: false,
         preferences : {
             color : "brown",
             listSize : 800
         }
      }
   }
   toggleItem(item) {
      console.log("Selected item: ", item);
      if( this.state.selectedItem &&
          item.id === this.state.selectedItem.id) {
         this.setState({selectedItem: null});
      } else {
         let ItemID= item.id;
         let newSeen = {ItemID : "seen"};
         this.setState({selectedItem: item});
         this.setState({itemStatus: newSeen});
      }
      console.log(this.state.itemStatus)
   }
   fetchData() {
        request.get("http://localhost:3000/itemStatuses")
            .end( (err,response) => {
                this.setState({itemStatus: response.body})
            })
    }
   startLoadingItems() {
        request.get("http://localhost:3000/hn/topstories")
            .end( (err,response) => {
                this.setState({items : response.body})
            })
    }
}
Run Code Online (Sandbox Code Playgroud)

打印时itemStatus我得到这个:

{16490176: "seen", 16497964: "seen", 16514428: "read", 16542395: "read", 16566536: "read"}
Run Code Online (Sandbox Code Playgroud)

当代码执行时,itemStatus看起来像这样:

{ItemID: "seen"}
Run Code Online (Sandbox Code Playgroud)

如何将 item.id 和“seen”的键值对添加到状态?

Mar*_*kus 8

除了 Rajesh 指出的动态键之外,还要注意setState将浅合并现有状态和新状态:尝试

this.setState({[ItemId]: 'seen'})
Run Code Online (Sandbox Code Playgroud)