Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的组件没有';重排机_Javascript_Reactjs - Fatal编程技术网

Javascript 我的组件没有';重排机

Javascript 我的组件没有';重排机,javascript,reactjs,Javascript,Reactjs,当我点击按钮时,我在控制台中看到“1”,但从未看到“2”。为什么会这样?你能帮我解决这个问题吗?我真的不知道为什么我的第二个组件没有更新 类应用程序扩展了PureComponent{ 构造函数(){ 超级(); 此.state={ 姓名:“瓦西亚” } this.\u onChange=this.\u onChange.bind(this); } _onChange(名称){ 这是我的国家({ 姓名:姓名 }); } render(){ 控制台日志(1); 返回{ } } } 类的另一个组件扩

当我点击按钮时,我在控制台中看到“1”,但从未看到“2”。为什么会这样?你能帮我解决这个问题吗?我真的不知道为什么我的第二个组件没有更新

类应用程序扩展了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')} />