反应本机状态TypeError:分配的来源之一在原型链上有一个可枚举的密钥

时间:2019-02-26 22:25:12

标签: javascript reactjs native

我在理解状态和setState时遇到问题,无法使我的代码正常工作:

构造函数:

constructor(){
    super();
    this.state = {
      Ingredient : getRandomIngredient(baseArray)
    }
  }

按钮:

<Button title="Mix Salad"
                onPress = {()=>this.handleButtonPress()}
        />

功能:

handleButtonPress= () => {
    this.setState(
      this.Ingredient = getRandomIngredient(baseArray)
    )
  }

一旦按下按钮,就会发生错误。 问题a)如何正确使用state和setState? 问题b)初始状态不会通过render()函数保持不变。我的成分对象仍然未定义。那可能不是故意的。我该怎么做,成分对象保留其值?

2 个答案:

答案 0 :(得分:0)

这是错误的语法

this.setState(
  this.Ingredient = getRandomIngredient(baseArray)
)

正确:

this.setState({ Ingredient : getRandomIngredient(baseArray) })

SetState函数始终带有对象参数

EDit: 请注意异步函数,如果getRandomIngredient()花时间返回值,那么成分将为空

答案 1 :(得分:0)

您需要在setState中使用一个对象。

handleButtonPress = () => {
    this.setState({
        Ingredient: getRandomIngredient(baseArray)
    });
}