0

我试图实现的是能够使用 setState 方法将对象设置为状态。但是我在这样做时面临一些困难。

这是我要达到的最终产品(状态)

  state_class_mapping: {
        {1} ,
        rect: {
          fill: "deepskyblue"
        },
        label: {
          stroke: "white"
        }

这些值是从不同的区域获得的,rect 和 label 在初始化时预设在我的状态中:

 constructor(props) {
super(props)

this.state = {
  selected_state: null,
  state_class_mapping: {},
  selected_state_class: {         #<---- here 
    rect: {
      fill: "deepskyblue"
    },
    label: {
      stroke: "white"
    }
  },
  default_state_class: {     #<---- or here depending 
    rect: {
      fill: "#dddd"
    },
    label: {
      stroke: "black"
    }
  }
  }

整数值实际上是我单击的对象的 ID。单击该对象后,我将运行一些函数来设置“selected_state”。

我的问题是我在创建 state_class_mapping 状态时遇到问题,因为它比设置静态键和值更复杂。

我设想的设置方式是:

this.setState({state_class_mapping:{
    {this.state.selected_state},
    {this.state.default_state_class}
  })
  }
}

但是我的编辑当然表明这样做是非法的。我可以知道这样做的正确方法是什么吗?

4

1 回答 1

4

我刚刚看了你的代码,我认为你错过了一些片段。首先,您需要根据您在状态定义中声明的确切类型声明正确的对象。所以在我看来,你需要像这样尝试。

this.setState({state_class_mapping: {
   idValue, 
   ...this.state.selected_state, 
   ...this.state.default_state_class
}});

您没有将 state_class_mapping 类型声明为 { {}, [{}]},因此您的代码无法正常工作。您声明为这种类型 {{}, {}}

希望这可以帮助您理解。

于 2020-05-27T06:46:34.970 回答