开发者问题收集

通过类函数间接更新状态

2016-05-19
53

我有一个 Person 类,它具有 setName 和 getName 函数。

var person = new Person("Johnny");
this.setState({personObj: person})

如果我调用 this.state.personObj.getName(); 我会按预期获得 Johnny。

我知道您不应该直接更新状态,例如 this.state.name = 'Johnny'

但是使用类函数调用来更新类中的属性是否不好,例如

this.state.personObj.setName("Joe");

看起来像一个灰色区域。

1个回答

虽然您可以通过函数更新对象的实例,但除非您调用 this.setState,否则它不会帮助/影响组件状态。您可以从先前的状态创建一个新的状态对象,然后使用 this.setState 。您必须调用 this.setState 才能使组件采用新状态。

agenthunt
2016-05-19