gpt4 book ai didi

javascript - React组件如何简化这个onClick功能?

转载 作者:行者123 更新时间:2023-11-30 12:28:48 26 4
gpt4 key购买 nike

这并不是一个真正的 React 特定问题,但我认为它有助于了解上下文。在一个组件中,我正在生成一些表格行。每行都需要一个将 id 传递给组件 handleUnlink 方法的 onClick 函数。

我让它与下面的代码一起工作,但这让我有点头晕,我觉得这可以用更简单的方式完成。我说得对吗?

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>);
});

最佳答案

Function.prototype.bind() 还会部分应用任何其他参数,因此您应该能够改为这样做:

onClick={this.handleUnlink.bind(this, p.id)}

奖励: this bind() 的参数如果您使用 React.createClass() 是多余的创建你的组件,因为它会自动为你绑定(bind)方法,所以我通常最终会写一个 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

...

var partial = require('./utils/partial')
// ...
onClick={partial(this.handleUnlink, p.id)}

关于javascript - React组件如何简化这个onClick功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28399159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com