Javascript 为什么我的onclick函数没有';我不在办公室工作

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

嗨,我不明白为什么我的onclick函数不起作用。我的函数create在加载页面时自己运行2次,但在单击按钮时不运行

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)?这是什么?