【问题标题】:Write nested objects in this.state in react js在 react js 中的 this.state 中写入嵌套对象
【发布时间】:2019-05-02 05:35:09
【问题描述】:

我正在尝试在 React 中创建一个状态对象。我要求我们“状态”实际上是一个由 setState 更新的字段

 this.state = {
        data:[],
        sort: 0,
        field:"",
        filters:{
            'status':{
                value:""
            }

代码应该是:

this.state = {
        data:[],
        sort: 0,
        field:"",
        filters:{
            field:{
                value:""
            }

如何将同一个对象设置为嵌套对象?

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    你可以这样做..

    let filters = {
      field:{
        value: ""
      }
    };
    
    this.setState({filters});
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      this.setState({
        filters: { ...this.state.filters, field: { value: 'new value' },
      });
      

      但是上面的语法很难看。我建议你使用immutability-helper 包来更新状态。

      请参阅此答案以了解如何使用 immutability helper 更新状态。

      【讨论】:

      • 请注意,您也可以使用immutable.js 库,它有专门针对这些情况的方法。
      • 感谢我得到了解决方案,我使用了以下代码 this.setState({ filters:{ [field]:{ value:e } }
      【解决方案3】:

      看看这个:

      this.setState({filters:{[field]:{value:e}}
      

      【讨论】:

      • 回答问题很好,谢谢。但是给出一个只是代码没有解释的答案并不是很有用。
      【解决方案4】:

      为嵌套对象设置状态。

       this.state = {
              data:[],
              sort: 0,
              field:"",
              filters:{
                  status:{
                      value:""
                  }
      

      如果我们想使用 setState 方法更新“状态”,请遵循此方法,这可能会对您有所帮助。

      let filters = {...this.state.filters}
      filters.status = { value: 10 };
      this.setState({filters})
      

      参考此文档:Link

      【讨论】:

        猜你喜欢
        • 2022-12-04
        • 2021-09-03
        • 2015-08-31
        • 2019-08-03
        • 2017-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-02
        相关资源
        最近更新 更多