这不是React特定的问题,但我认为了解上下文会有所帮助。在组件I中生成一些表行。每行都需要一个onClick函数,它将id传递给组件handleUnlink方法。
我让它使用下面的代码,但它使我的头旋转了一点,我感觉这可以以一种简单的方式完成。我是对的吗?
var fn = function(id){
return function(){
this.handleUnlink(id);
}.bind(this);
}.bind(this);
var linkedListHtml = this.state.linkedList.map( p => {
return(
<tr key={p.id}>
<td>{p.name}</td>
<td><mui.Icon icon='action-highlight-remove' onClick={fn(p.id)}/></td>
</tr>);
});
答案 0 :(得分:3)
Function.prototype.bind()
也会部分应用任何其他参数,因此您应该能够这样做:
onClick={this.handleUnlink.bind(this, p.id)}
加分:如果您使用this
创建组件,则bind()
的{{1}}参数是多余的,因为它会自动绑定方法对你而言,我通常最终会写一个React.createClass()
帮手:
partial
...
'use strict';
var slice = Array.prototype.slice
function partial(fn) {
var partialArgs = slice.call(arguments, 1)
return function() {
return fn.apply(this, partialArgs.concat(slice.call(arguments)))
}
}
module.exports = partial