javascript - 将参数传递给通过 props 接收的 onClick 函数而不绑定(bind) this

标签 javascript reactjs

我有以下两个组件:

class A extends Component {
   _onDelete(id) {
      this.props.deleteItem(id);
   }
   render() {
      return <B onDelete={this._onDelete}/>;
   }
}


class B extends Component {
   const onDelete= {this.props};
   let id = this.props.item.id;
   render() {
     return <div onClick={onDelete}>Hello</div>;
   }
}

我不想绑定(bind)this (组件 B 上下文)到函数,我只想传递 id_onDelete

我尝试了这些方法:

  1. 箭头函数:

     return <div onClick={() => onDelete(id)}>Hello</div>;
    

context_onDelete更改为 B,我无权访问 this.props.deleteItem不再了。

  • 经过事件:

    return <div onClick={onDelete} itemId={id}>Hello</div>;
    
    _onDelete(event) {
       this.props.deleteItem(event.target.itemId);
    }
    
  • event.target.itemIdundefined

    我怎样才能通过itemIdA的功能,无绑定(bind)this到它?

    最佳答案

    class A extends Component {
       _onDelete = (id) => {
          this.props.deleteItem(id);
       }
       render() {
          return <B onDelete={this._onDelete}/>;
       }
    }
    

    这样 _onDelete 将在 A 上下文中可用。在B中这样称呼就可以了

    class B extends Component {
       let id = this.props.item.id;
       render() {
         return <div onClick={() => this.props.onDelete(id)}>Hello</div>;
       }
    }
    

    关于javascript - 将参数传递给通过 props 接收的 onClick 函数而不绑定(bind) this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48313590/

    相关文章:

    javascript - 跨团队共享 gitignored 文件

    javascript - 比较两个对象数组,如果不存在则推送

    javascript - 如何使点击 div 重定向到另一个页面的 anchor

    reactjs - 读取文本文件 aws-amplify s3 从预签名 URL 读取数据

    reactjs - 如何在不同的 URL 路由之间保存 redux 状态?

    javascript - 如何使用react-calendar动态渲染列表?

    javascript - 无法使用 handlebars 和 assemblefile.js 呈现部分

    javascript - 使用查询更改我的 js 文件的版本

    ios - 无效错误中的新react-native 0.43.3项目元素类型

    reactjs - 在 TypeScript React 中导入图像 - "Cannot find module"