【发布时间】:2021-10-04 10:13:50
【问题描述】:
我正在努力从子级更新我的父级组件的状态。为此,我想将一个更新父母状态的函数作为参数传递给我的孩子:
export class Login extends Component {
updateTurn() {
console.log("UPDATE")
this.setState(
prevState => {
UPDATING
}
);
}
render() {
ROUTING MANAGEMENT
<Route path="/play/pledge">
<Pledge data={this.state.data} updateTurn={this.updateTurn}/>
</Route>
ROUTING MANAGEMENT
}
}
export class Game extends Component {
constructor(props) {
super(props);
this.data = this.props.data;
}
render() {
return (
<div>
<div className={"game"}>
{ this.props.children }
</div>
<div className={"next"}>
<Link to={Launcher.getRandomGame()}>
<button className={"button"} onClick={this.props.updateTurn}>Next</button>
</Link>
</div>
</div>
)
}
}
不幸的是,没有发生任何事情,即使是console.log()
【问题讨论】:
-
我认为您调用的是 Pledge 而不是 Game 组件。
-
什么是
<Pledge>?这是自定义组件吗?如果有,请附上它的代码。 -
接受
incrementByOne的Pledge组件是什么?Game在哪里使用?我们甚至无法分辨这里的哪个组件是哪个子组件,Game和Login似乎无关。 -
this.data = this.props.data;是一种反模式。由于每次 React 调用render()时this.props的值都会发生变化,因此您应该直接访问它而不是将其保存到类变量中。 -
ROUTING MANAGEMENT是无效的 JavaScript。要么将此评论设为合法评论,要么将其删除。
标签: javascript reactjs inheritance