javascript - React 缺少 onClick?

标签 javascript reactjs

<分区>

我在组件中有以下代码:

  deleteShare: function(e) {
    console.dir(e);
  },

  render: function() {
    createShare = function(share) {
      return (
        <span key={share} className='share'>
          {share}
          <a href="#" onClick={this.deleteShare}>x</a>
        </span>
      )
    }

    return (
      <div>
        <input type='hidden' name='shares' value={this.state.shares.join(',')} />

        <div className='ticket_shares'>
          {this.state.shares.map(createShare)}
          <input type='text' id='new_share' placeholder='Add an email' onKeyDown={this.addShare}/>
        </div>
      </div>
    )
  }

但是,我发现 createShare 中 anchor 上的 onClick 似乎没有触发,就像它没有绑定(bind)一样。控制台中没有错误或任何内容。

我假设 React 设置事件绑定(bind)的方式有些奇怪,或者某种上下文问题。我该如何解决这个问题?

最佳答案

createShare 中,this 将绑定(bind)到窗口,因为它在函数内部。

您可以将 createShare 更改为组件上的方法,React 将 autobind it to the component , 或使用 Function.prototype.bind 将其绑定(bind)到您期望的内容

另一个不错的解决方案是 ES6 arrow functions它将 this 绑定(bind)到它们定义的范围,但这需要一些设置

关于javascript - React 缺少 onClick?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29780983/

相关文章:

javascript - react 路由器 v4.1.1

javascript - 何时通过 API 调用在 React 中滚动IntoView

reactjs - 对于 React 应用程序主题,material-ui makeStyles 与 SCSS 架构相比是否有优势?

javascript - MongoDB 减少单值键

javascript - DevTools 无法解析 SourceMap : chrome-extension

java - Thrift Java 服务器 OutOfMemoryError 与 Javascript 客户端

reactjs - 无状态组件中的 clickHandler?

javascript - 我如何在类组件中使用 bool 状态的可重用函数

javascript - 如何正确处理 ReactJS 中的状态变化

javascript - Highcharts/HighcharteR Tooltip : access all y-values within a series, 打印差异