javascript - React onClick 函数仅在渲染到 DOM 时触发一次

标签 javascript dom reactjs

我有以下 React 组件示例,它根据组件的状态将标签呈现给 DOM。目的是在单击 delete_tag anchor 后从状态的 tags 数组中删除 item。目前,我只是将其设置为提醒用户。

  getInitialState: function () {
    return {
      el: 'times',
      tags: ['dog', 'cat']
    };
  },

  render: function () {
    let that = this;
    return (
      <div id={this.state.el}>
        <div className="center-form">
          <div className="tag_div">
            { this.state.tags.map(function(item) {
                return (
                <div className="tag">
                  {item}
                  <a className="delete_tag" onClick={alert(item)}></a>
                </div>
                );
              })
            }
          </div>
        </div>
      </div>
    );
  }

使用上面的代码,在呈现每个标签之前,用户会立即收到警报。之后,标签呈现,但 delete_tag anchor 不响应任何点击。

我觉得这很奇怪,因为这个组件中的其他函数以与 onClick={that.function()} 类似的方式使用,似乎按预期工作。 为什么这个 onClick 属性没有按预期运行?

最佳答案

您需要向onClick 传递一个函数。您传递的值 - alert(item) - 不是函数,它只是 alert 的调用。

相反,您想要:

onClick={function () { alert(item); }}

或者如果您使用的是 ES6:

onClick={() => alert(item)}

关于javascript - React onClick 函数仅在渲染到 DOM 时触发一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34711351/

相关文章:

Javascript 自定义排序功能,用于底部空白的日期

javascript - Three.js由mouseMove改为随机移动

javascript - 没有输出到 DOM 树

javascript - jQuery .prev() 类型,无论其父级等

Javascript 导致选择输入卡住

css - TypeError: $.each 不是函数 (ReactJS)

javascript - SystemJS 找不到带有 Typescript 和 Electron 的 xml-js 模块

javascript - 如何使用ajax多次发出请求而不进行硬刷新

javascript - 如何在 React Native 上访问数组状态或 json 数据?

javascript - Material UI - 工具提示意外显示