首页 > 解决方案 > 您可以使用 setState() 向对象添加属性吗

问题描述

我有以下回调函数:

 handleAddList(s) {

      let myItems = {};
      let keys = Object.keys(this.state.items);
      for (var key in keys) {         
         myItems[keys[key]] = this.state.items[keys[key]];
      }
      myItems[s]=[];

      this.setState({lists:[...this.state.lists,s],items:myItems},function(){
         console.log(this.state);
      });
   }

但我想知道是否有一种方法可以添加myItems[s]=[]this.state.items无需复制整个对象。

标签: react-nativejavascript-objectssetstate

解决方案


就在这里。

例如

handler() {
    let myItems = {};
    let keys = Object.keys(this.state.items);
    for (var key in keys) {         
        myItems[keys[key]] = this.state.items[keys[key]];
    }
    myItems[s]=[];

    this.state.items=myItems;
    this.forceUpdate();
}

如果你只是想更新myItems.

setStateforceUpdate

        setState<K extends keyof S>(
            state: ((prevState: Readonly<S>, props: Readonly<P>) => (Pick<S, K> | S | null)) | (Pick<S, K> | S | null),
            callback?: () => void
        ): void;

        forceUpdate(callback?: () => void): void;

推荐阅读