React js onClick无法将值传递给方法

我想读取onClick事件值属性。但当我点击它时,我在控制台上看到类似的内容:

SyntheticMouseeEvent{dispatchConfig:Object,dispatchMarker:“.1.1.0.2.0.0:1”,nativeEvent:MouseeEvent,键入:“单击”,目标

我的代码工作正常。当我运行时,我可以看到{column},但无法在onClick事件中获取它

我的代码:

var HeaderRows=React.createClass({
handleSort:函数(值){
console.log(值);
},
渲染:函数(){
var=这个;
返回(
<tr>
{this.props.defaultColumns.map(函数(列)){
返回(
<th value={column}onClick={that.handleSort}>{column}</th>
);
})}
{this.props.externalColumns.map(函数(列)){
//多维数组-0是列名
var externalColumnName=列[0];
返回(<th>{externalColumnName}</th>);
})}
</tr>
);
}
});

如何将值传递给React js中的onClick事件

捷径

使用箭头功能:

返回(
<th value={column}onClick={()=>this.handleSort(column)}>{column}</th>
);

这将创建一个新函数,该函数使用正确的参数调用handleSort

更好的方法

将其提取到子组件中。
在渲染调用中使用箭头函数的问题在于每次都会创建一个新函数,从而导致不必要的重新渲染

如果创建子组件,则可以传递处理程序并使用props作为参数,只有当props更改时,才会重新呈现(因为处理程序引用现在从未更改):

子组件

类TableHeader扩展组件{
handleClick=()=&gt{
this.props.onHeaderClick(this.props.value);
}
render(){
返回(
<th onClick={this.handleClick}>
{this.props.column}
</th>
);
}
}

主要部件

{this.props.defaultColumns.map((column)=&gt(
<表格标题
值={column}
onHeaderClick={this.handleSort}
/&燃气轮机;
))}

旧捷径(ES5)

使用.bind传递所需的参数,这样就可以将函数与组件上下文绑定:

返回(
<th value={column}onClick={this.handleSort.bind(this,column)}>{column}</th>
);

发表评论