【发布时间】:2016-11-23 10:55:56
【问题描述】:
我有这个fiddle
let m = new Mine();
this.setState(m, () => {
console.log('1:', m instanceof Mine, m.x, m.meth);
// => 1: true 123 function meth() {}
console.log('2:', this.state instanceof Mine, this.state.x, this.state.meth);
// => 2: false 123 undefined
});
如您所见,我创建了 Mine 类的一个实例,然后使用该实例在反应组件中设置状态。
我希望 this.state 包含该实例,但在构造函数中设置的实例属性可用时,我无法访问该实例上的任何类方法。
fiddle 中的测试表明 this.state 不是 Mine 类的实例。
有人了解发生了什么还是这种意外行为?
【问题讨论】:
-
你的小提琴是空的,分享前需要保存。
-
可能是因为原型中的 meth()。尝试在构造函数
this.meth = this.methjsfiddle.net/pb2uqr2o/1 中明确定义 -
另一个原型jsfiddle.net/pb2uqr2o/2的例子,它也不起作用
-
this.setState({...m, meth:m.meth});将工作。但我认为你不应该在状态中保留函数。
-
或 this.setState({m}) 和
this.state.m.meth
标签: class reactjs instance setstate