当前位置: 首页 > 面试题库 >

反应点击处理程序并将其绑定

慕高阳
2023-03-14
问题内容

我有一个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值;我对map()和click-handler都使用bind。

这是将参数传递给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")),

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



 类似资料:
  • 问题内容: 我想使用获取ID为参数的处理程序来处理事件。 我可以通过JavaScript如下添加事件处理程序,并且可以正常运行: 但是在这种情况下,我无法将参数传递给。我试图打印的,但没有结果。 HTML属性根本不起作用,不调用处理程序。 问题答案: 您可以使用闭包来传递参数: 但是,我建议您使用更好的方法来访问框架(我只能假设您使用的是DOM0方式,即按其名称访问框架窗口-只是为了向后兼容而保留

  • 我有一个包含一些字段的,每个字段都绑定了一些事件(与此功能无关)。 我必须添加另一个到每个字段,以显示一个模态在第一次点击他们中的任何一个,并且只在第一次点击。 我想的是这样的: 其思想是,在第一次单击之后,方法将从所有元素中删除“click handlers”。 如果不存在其他引用的“点击处理程序”,那就太好了,因为这样我就把它们全部删除了。 我需要从所有字段中只删除这个特定的“单击处理程序”,

  • 问题内容: 当我运行多线程代码时,系统(linux)有时会将线程从一个处理器移动到另一个处理器。由于我拥有与处理器一样多的线程,因此它没有充分的理由使缓存无效,并且使我的跟踪活动混乱。 您知道如何将线程绑定到处理器,为什么系统会这样做? 问题答案: 使用(这是特定于Linux的)。 为什么调度程序会在不同处理器之间切换线程?好吧,假设您的线程最后一次在处理器1上运行,并且当前正在等待再次安排执行时

  • 问题内容: 我试图在Go中启动一个HTTP服务器,该服务器将使用自己的处理程序来提供自己的数据,但与此同时,我想使用默认的http FileServer来提供文件。 我在使FileServer的处理程序在URL子目录中工作时遇到问题。 该代码不起作用: 我期望在localhost:1234 / files /中找到本地目录,但是它返回一个。 但是,如果我将文件服务器的处理程序地址更改为/,它将起作