【发布时间】:2017-12-11 23:44:53
【问题描述】:
我的Letter 组件需要多次重用,其构造函数中发生的事情发生了微小的变化。我的想法是将一个函数作为道具传递给Letter,这样我就可以在构造函数中调用它。但是,我遇到了this 的问题。
在下面的代码中,当我调用this.props.setMessage.call(this) 时,this 指的是Container 而不是Letter,所以Letter 的状态保持不变。我可以通过在Container 的setMessage 函数的主体中插入console.log(this) 来看到this 引用Container。
如何绑定this 以便在我运行此代码时Letter 的状态会发生变化?
来源:
export class Container extends React.component {
...
setMessage = () => {
this.state.message = 'hello';
}
render () {
return (
<div>
<Letter setMessage={this.setMessage} />
</div>
}
}
export class Letter extends React.component {
constructor (props) {
super(props);
this.props.setMessage.call(this); // doesn't work, 'this' should refer to Letter but refers to Container
}
render () {
...
}
}
【问题讨论】:
-
您以错误的方式更新状态,请使用 setState:
this.setState({message: 'hello';})
标签: javascript reactjs