Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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,我试图创建一个计数器按钮,但我不能。我知道这与绑定有关,但我找不到解决方案。我尝试使用.bindthis,但它不起作用 类按钮扩展了React.Component{ 渲染{ 回来 +1 } } 类结果扩展了React.Component{ 渲染{ 回来 {this.props.localCounter} } } 类Main扩展了React.Component{ 构造器{ 超级作物; 这个州={ 柜台:0 } } 点击处理程序{ 此.setState{计数器: this.state.counte

我试图创建一个计数器按钮,但我不能。我知道这与绑定有关,但我找不到解决方案。我尝试使用.bindthis,但它不起作用

类按钮扩展了React.Component{ 渲染{ 回来 +1 } } 类结果扩展了React.Component{ 渲染{ 回来 {this.props.localCounter} } } 类Main扩展了React.Component{ 构造器{ 超级作物; 这个州={ 柜台:0 } } 点击处理程序{ 此.setState{计数器: this.state.counter+1}; } 渲染{ 回来 } } ReactDOM.render , document.getElementByIdapp 变化:

一,。在主组件的构造函数中绑定handleClick方法

二,。名称不匹配,您正在传递handleClick方法,但定义了clickHandler。将clickHandler替换为handleClick

检查工作代码段:

类按钮扩展了React.Component{ 渲染{ 回来 +1 } } 类结果扩展了React.Component{ 渲染{ 回来 {this.props.localCounter} } } 类Main扩展了React.Component{ 构造器{ 超级作物; 这个州={ 柜台:0 } this.handleClick=this.handleClick.bindthis; } 手舔{ this.setState{counter:this.state.counter+1}; } 渲染{ 回来 } } ReactDOM.render , document.getElementByIdapp 只需在处理程序上使用,这样就可以引用组件,而不是未定义的组件

注意,这不是React所特有的,而是JavaScript类方法的默认行为,它不会自动绑定

此外,在处理程序定义中以及在模板中使用时,使用的名称也不同

类按钮扩展了React.Component{ 渲染{ 回来 +1 ; } } 类结果扩展了React.Component{ 渲染{ 回来 {this.props.localCounter} ; } } 类Main扩展了React.Component{ 构造器{ 超级作物; 此.state={ 柜台:0,, }; this.handleClick=this.handleClick.bindthis } 手舔{ 这是我的国家{ 计数器:this.state.counter+1, }; } 渲染{ 回来 ; } } ReactDOM.render,document.getElementById'app';
将此添加到构造函数-this.clickHandler=this.clickHandler.bindthis。可能与我尝试过的方法重复。这不起作用。@KrishnaRana你得到了什么错误?我没有得到任何错误,但屏幕是空白的。如果你在这方面需要帮助,请告诉我。