使用 constrocer 绑定后,如何将参数传递给回调方法?

Posted

技术标签:

【中文标题】使用 constrocer 绑定后,如何将参数传递给回调方法?【英文标题】:how to pass parameters to a callback method when you have used the constrocer to bind it? 【发布时间】:2018-06-16 07:03:50 【问题描述】:

我正在使用以下方式进行回调,因为据说这是最优化/最快的方式:

class Foo extends React.Component 
  constructor() 
    super();
    this._onClick = this._onClick.bind(this);
  
  render() 
    return (
      <div onClick=this._onClick>
        Hello!
      </div>
    );
  
  _onClick() 
    // Do whatever you like, referencing "this" as appropriate
  

但是如果我需要将参数传递给我的_onClick 方法怎么办? 如果我使用.bind(this) 作为道具,我知道该怎么做,但是我上面展示的方式我不知道如何处理。

顺便说一句,我阅读了here 的文章,但它确实适用于我。

【问题讨论】:

你想从哪里将值传递到哪里?只需使用相应的参数调用该函数即可。 【参考方案1】:

我认为这些文章会澄清很多: article1 和 articles2。您也可以尝试以下实现,它的灵感来自 2 篇文章:

class Foo extends React.Component 
/*
  in your case you need to make the bind under the render call as below
*/

  _onClick() 
    // Do whatever you like, referencing "this" as appropriate
  

  render() 
    return (
      /*
          this bind here is necessary to precise the params,
          and about the perfermances issues it's very relative to the app composition.
        */
      <div onClick=this._onClick.bind(this /*,var1, var2*/)>Hello!</div>
    );
  


// a solution for passing properties without
// entring in perfermances issues is to make a small refacto :

class Foo extends React.Component 
  _onClick() 
    // Do whatever you like, referencing "this" as appropriate
  
  render() 
    return <MyDiv ...this.props onItemClick=this._onClick>Hello!</MyDiv>;
  


const MyDiv = React.createClass(
    render() 
      // Don't need a bind here, since it's just calling
      // our own click handler
      return (
        <div onClick=this.handleClick>Hello!</div>
      );
    ,

    handleClick() 
      // Our click handler has access over the this.props,
      // since React.createClass auto bounds this.
      // so it could just pass what it needs along.
      this.props.onItemClick(/*arguments from this.props*/);
    
  );

【讨论】:

hmmm 这样我就再次使用了粗箭头。它不是在每次渲染上都创建了一个全新的功能吗? 我认为这个博客可以帮助你,这是链接:cdb.reacttraining.com/… @farmcommand2,我已经更新了答案,我认为它至少会有所帮助,因为这个话题令人困惑和神秘。

以上是关于使用 constrocer 绑定后,如何将参数传递给回调方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何在onClick事件绑定中传递参数?

如何将参数(id)传递给 WCF 中的消息检查器?

如何使用绑定变量执行 SQL 脚本

如何在 PLSQL 过程中将绑定变量作为 IN OUT 参数传递

在 React 中绑定函数时如何传递事件参数?

jquery如何绑定一个已有的方法并传递参数