reactjs - react 点击处理程序并绑定(bind)它

标签 reactjs

我有一个 react 组件,我在其中迭代列表并创建行。每行都有一个删除按钮。单击删除按钮时,我想传递对该行中元素的引用。

var TagTable = React.createClass({

        onTagDelete: function(tagName) {
            this.props.onTagDelete(tagName);
        },

        render: function () {
            return R.table({className: "bg-box padded"}, [
                R.thead({},
                    R.tr({}, [
                        R.th({}, ""),
                        R.th({}, "Tag"),
                        R.th({}, "Regexes")
                    ])),
                R.tbody({},
                    this.props.tags.map(function (tag) {
                        return R.tr({}, [
                            R.td({}, R.button({onClick: function() {this.onTagDelete(tag.name)}.bind(this), // BIND
                                className: "delete"}, "\u2716")),
                            R.td({key: "name"}, tag.name),
                            R.td({key: "regexes"}, tag.regexes.join(", "))]);
                    }.bind(this))) // BIND
            ])
        }
    }
);

所以为了在点击处理程序中保留 this-value ;我对 map ()和点击处理程序都使用绑定(bind)。

这是在 React 中将参数传递给处理程序的正确方法还是有更好的方法?

最佳答案

我对 react 还很陌生,但我想我应该把它扔在这里来提供帮助。

我认为你需要改变这一行,

R.td({}, R.button({onClick: function() {this.onTagDelete(tag.name)}.bind(this), // BIND
                            className: "delete"}, "\u2716")),

R.td({}, R.button({onClick: function() {this.onTagDelete.bind(this, tag.name)}, // BIND
                            className: "delete"}, "\u2716")),

我非常确定现在应该将标签名称传递给函数。从单击的主题获取数据的另一种方法是通过引用,但对于项目列表,我认为由于重复的引用名称,这种方法效果不佳。所以我会做你现在正在做的事情。

关于reactjs - react 点击处理程序并绑定(bind)它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26346263/

相关文章:

reactjs - Ant Design Popconfirm 确认 [ENTER]?

reactjs - React Native - (0, _redux.combineReducers) 不是函数

javascript - 特定语言 Yup 验证

javascript - 在我的 React.js 应用程序中导入 D3.js 库时出错

javascript - 根据视口(viewport)宽度 react js设置初始常量

javascript - setState 更新挂载状态

reactjs - 在 react 路由器 dom v6 中渲染

javascript - 如何制作包含空格的关联图

javascript - 为什么变量++的工作方式与变量+1不同

node.js - 服务器和客户端的路由 - React.js 和 Node.js