【问题标题】:Make whole row clickable in reactJs在 reactJs 中使整行可点击
【发布时间】:2019-07-25 10:35:58
【问题描述】:

我是 reactJs 新手。我想让整行都可以点击。

deleteApp(appId) {
    if (window.confirm("Are you sure want to delete this app?")) {
      this.props.deleteApp(appId)
    }
  }

  showAds(appId) {
    console.log("Clicked")
  }

这是我试图触发onClick 事件的函数。现在我只是安慰函数内部的任何东西,但它没有安慰任何东西

<tbody>
  {
    apps.map(function (app, index) {
      return <tr key={index} onClick={() => { showAds(app._id) }}>
        <td></td>
        <td>
          {app.app_name}
        </td>
        <td>
          <a onClick={() => { deleteApp(app._id) }}>
            Delete
            </a>
        </td>
      </tr>
    })
  }
</tbody>

上面是我用来执行onClick 事件的代码,但这不起作用。我对删除按钮做了同样的事情,它工作正常。但是当我尝试使整行可点击时,我无法触发 onClick 事件。我搜索了很多地方,但找不到任何适合此问题的解决方案。

我尝试的最后一件事是制作

我在这里做错了吗?

更新

Full code

【问题讨论】:

  • 嗨,我认为问题是创建表格行的用户功能未绑定到您的反应组件。 this 的值不会是您的反应组件,并且 handleClick 不会作为 this 的属性存在
  • 试试 { alert(app._id) }}> 看看这是否有效。检查您的 showAds 是否有效/是否正确通过。否则发布完整代码
  • 那么我该怎么做才能使 onClick 完美运行@dev
  • @AnilKumar { alert(app._id) }}> 这很好用。是的,showAds 已正确传递,并且也有效
  • 嗨,要么用这个。 showAds 或做 const showAds = this.showAds

标签: reactjs


【解决方案1】:

我刚刚发现我没有在render 函数中初始化this.showAds

 render() {
const { user } = this.props.auth
const { apps } = this.props.apps
const deleteApp = this.deleteApp

const showAds = this.showAds

我只需要在render 函数中声明showAds,它就开始响应了。

【讨论】:

    【解决方案2】:

    要么使用 this.showAds 要么使用 const showAds = this.showAds

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签