Javascript 为什么我的onclick函数没有';我不在办公室工作
嗨,我不明白为什么我的onclick函数不起作用。我的函数create在加载页面时自己运行2次,但在单击按钮时不运行Javascript 为什么我的onclick函数没有';我不在办公室工作,javascript,reactjs,Javascript,Reactjs,嗨,我不明白为什么我的onclick函数不起作用。我的函数create在加载页面时自己运行2次,但在单击按钮时不运行 import React,{Component,PropTypes}来自'React'; 从“meteor/react meteor数据”导入{createContainer}; 从“../api/topic.js”导入{Topics}; 从“/Topic.jsx”导入主题; 类AppCreate扩展组件{ render(){ 返回( ); } 创建(e){ {var test
import React,{Component,PropTypes}来自'React';
从“meteor/react meteor数据”导入{createContainer};
从“../api/topic.js”导入{Topics};
从“/Topic.jsx”导入主题;
类AppCreate扩展组件{
render(){
返回(
);
}
创建(e){
{var test=document.getElementsByClassName(“主题”).value;
console.log(测试);}
}
}
AppCreate.propTypes={
主题:PropTypes.array.isRequired
};
导出默认createContainer(()=>{
返回{
topics:topics.find({}).fetch(),
};
},AppCreate)代码>为什么它不起作用
当传递onClick={this.create()}
时,实际上传递的是函数的返回值,而不是函数本身。作为副作用,这还将导致在渲染时调用该函数,而不仅仅是在用户实际单击时
解决方案
如果要传递要调用的函数本身,请注意没有括号()
:
onClick={this.create}
如果需要访问单击手柄中的组件实例
您还需要在方法中绑定this
(组件的实例),例如,要访问this.state
,您必须设置该值
onClick={this.create.bind(this)}
这样,create()内部的执行将有一个与组件实例相等的this
值,允许您访问其属性和方法,如this.props
,this.state
以及您在组件上定义的其他方法。的可能重复项看起来他也缺少创建函数的绑定。。。this.create=this.create.bind(this)如果我在函数中使用this,我必须使用bind(this)?这是什么?