Javascript 我的组件没有';重排机
当我点击按钮时,我在控制台中看到“1”,但从未看到“2”。为什么会这样?你能帮我解决这个问题吗?我真的不知道为什么我的第二个组件没有更新Javascript 我的组件没有';重排机,javascript,reactjs,Javascript,Reactjs,当我点击按钮时,我在控制台中看到“1”,但从未看到“2”。为什么会这样?你能帮我解决这个问题吗?我真的不知道为什么我的第二个组件没有更新 类应用程序扩展了PureComponent{ 构造函数(){ 超级(); 此.state={ 姓名:“瓦西亚” } this.\u onChange=this.\u onChange.bind(this); } _onChange(名称){ 这是我的国家({ 姓名:姓名 }); } render(){ 控制台日志(1); 返回{ } } } 类的另一个组件扩
类应用程序扩展了PureComponent{
构造函数(){
超级();
此.state={
姓名:“瓦西亚”
}
this.\u onChange=this.\u onChange.bind(this);
}
_onChange(名称){
这是我的国家({
姓名:姓名
});
}
render(){
控制台日志(1);
返回{
}
}
}
类的另一个组件扩展了PureComponent{
常数{
用户名
}=这是道具
render(){
控制台日志(2);
返回{
测试
}
}
}
导出默认应用程序代码>示例中的一些代码问题
- 从render()返回React元素时,它们必须用parens()而不是curlies{}包装
- 使用React.Component,而不是React.PureComponent,否则会出现问题
- 不是一件事,用吧
然后,主要问题是无限循环-渲染时,这一行:
<Button onClick={this._onChange('Petr')} />
…这将在渲染时调用_onChange()函数,并将结果作为onClick属性传递给按钮。这不是您想要的-您希望onClick prop是一个调用_onChange()的函数。所以
this.\u onChange('Petr')}/>
完整工作示例:
类应用程序扩展了React.Component{
构造函数(){
超级();
此.state={
姓名:“瓦西亚”
}
this.\u onChange=this.\u onChange.bind(this);
}
_onChange(名称){
这是我的国家({
姓名:姓名
});
}
render(){
控制台日志(1);
返回(
这个。_onChange(“Petr”)}/>
);
}
}
类的另一个组件扩展了React.Component{
render(){
控制台日志(2);
返回(
测试
);
}
}
ReactDOM.render(,document.getElementById(“app”)代码>
这是因为您使用的是PureComponent。把它改成组件,我想它会解决的。阅读一下PureComponent,更好地理解这个问题。我很惊讶你能看到任何东西。我怀疑return{…}
是一个语法错误。谢谢,但是用PureComponent我做不到?
<button onClick={ () => this._onChange('Petr')} />