当前位置: 首页 > 知识库问答 >
问题:

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

傅奕
2023-03-14

我有一个inputHTML标记,其中onChange当前是

onChange={() => { this.props.someFunc(this.props.someVal, e.target.checked) }

但是,我希望遵循es lintno bind规则(我希望避免内联函数),并且我在处理这个onChange函数的参数时遇到了问题。

在我的构造函数中,我有:

constructor() {
  super();
  this.state = {
    // some state
  };
  this._onChangeHandler = this._onChangeHandler.bind(this);
}

_this.onChangeHandler = (event, val) => {
  this.props.someFunc(event.target.checked, val);
}

render() {
  <div>
    {
      this.props.inputs.map((x) => {
        const someValue = // ...a calculated value

        return (
          <label
            }>
            <input
              onChange={ this._onChangeHandler(someValue) } // need BOTH someValue and the event
              checked={ aBool }
              type="checkbox"
              value={ anotherValue }/>
            <span>{ textHere }</span>
          </label>
        );
      })
    }
  </div>
}

我看过这篇文章,但目前还没有运气。我需要做什么才能将值和事件都传递给绑定函数?

共有3个答案

邵子平
2023-03-14

来自Fleezey评论中链接的es lint示例。以下是您的案例中的情况:

var List = React.createClass({
  constructor() {
      super();
      this._onChangeHandler = this._onChangeHandler.bind(this);
  }

  this._onChangeHandler = (event, val) => {
    this.props.someFunc(event.target.checked, val);
  }

  render() {
    <div>
      {
        this.props.inputs.map((x) => {
          const someValue = // ...a calculated value

          return (
            <label>
              <ListItem
                onChange={ this._onChangeHandler }
                changeHandlerValue={ someValue }
                checked={ aBool }
                value={ anotherValue } />
              <span>{ textHere }</span>
            </label>
          );
        })
      }
    </div>
  }
});

var ListItem = React.createClass({
  render() {
    // render the input using the props passed in
    return (
      <input
         onChange={this._onChange} 
         checked={this.props.checked} 
         type="checkbox"
         value={this.props.value}
      />
    );
  },
  _onChange(event) {
    // trigger the event handler and pass both the event and the value
    this.props.onChange(event, this.props.changeHandlerValue);
  }
});
汤兴生
2023-03-14

您可以尝试以下方法:

<input
  onChange={(e) => this._onChangeHandler(e, someValue)}
/>
酆浩邈
2023-03-14

如果你用咖喱怎么办?

// Helper method that returns a function
const generateHandler = (value, method) => e => method(e, value)

// Apply the helper method
<input onChange={generateHandler(someValue, this._onChangeHandler)} />
 类似资料:
  • 我在ListItem中设置了一个事件。然后在调用的方法上调用来传递单击的列表项的id和name值。 下面的问题建议使用bind,但似乎将onCLick事件添加到ListItem会破坏列表绑定。 在添加单击事件之前,与的列表范围绑定按预期工作,并填充列表。 此外,如果我尝试没有参数,则单击事件不起作用。 问题: 如何在JSX中的onClick事件绑定中传递参数? 列表定义: 从单击事件调用的方法:

  • 本文向大家介绍在React中怎么将参数传递给事件?相关面试题,主要包含被问及在React中怎么将参数传递给事件?时的应答技巧和注意事项,需要的朋友参考一下 如果使用箭头函数声明函数,调用方式: 不传参:this.func1,如果不传参,事件参数默认会自己添加上 传参: (e) => {this.func1(e,'param1', 'param2')},如果传参,事件参数需要手动传递过来 如果不用箭

  • 问题内容: 没有参数 带参数 我想得到。我怎么才能得到它? 问题答案: 试试这个: 并在您的职能:

  • 本文向大家介绍如何在PowerShell函数中传递参数?,包括了如何在PowerShell函数中传递参数?的使用技巧和注意事项,需要的朋友参考一下 您可以在PowerShell函数中传递参数,并且要捕获这些参数,需要使用参数。通常,当您在函数外部使用变量时,您实际上不需要传递参数,因为变量本身是Public,可以在函数内部访问。但是在某些情况下,我们需要将参数传递给函数,下面的示例说明了如何编写该

  • 问题内容: 我想在警报窗口中显示该人的电子邮件。但是,我不知道如何将电子邮件作为参数传递给displayAlert方法。此外,它也不会让我使用。因此,我必须将displayAlert方法分配给变量,并在onClick中使用它。我不知道为什么它不能让我直接调用它。 问题答案: ES6方式 : 使用箭头功能 匿名函数被调用并执行 ES5方式: 您可以使用并在其中传递参数来执行此操作。 您还应该传递或使