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

13 浏览
0 Comments

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

我有一个 HTML标签,其中onChange目前是onChange={() => { this.props.someFunc(this.props.someVal, e.target.checked) }。然而,我想遵循es-lint的no-bind规则(我想避免使用内联函数),而且我在处理此onChange函数的参数时遇到了问题。在我的构造函数中,我有:constructor() { super(); this.state = { // 一些状态 }; this._onChangeHandler = this._onChangeHandler.bind(this); } _this.onChangeHandler = (event, val) => { this.props.someFunc(event.target.checked, val); } render() { { this.props.inputs.map((x) => { const someValue = // ...一个计算出的值 return ( ); }) } }我已经看了看这个帖子,但迄今为止没有运气。我需要做什么才能将值和事件都传递给一个绑定的函数?

0
0 Comments

在React中,绑定函数时,有时候需要将事件参数传递给这些函数。这篇文章将介绍一个示例,说明了为什么需要传递事件参数以及如何解决这个问题。

在示例中,我们有一个List组件和一个ListItem组件。List组件渲染了一个包含多个ListItem组件的列表。每个ListItem组件都包含一个复选框和一些文本。

在List组件中,我们定义了一个_onChangeHandler函数,用于处理复选框的onChange事件。在这个函数中,我们需要将事件参数(event)和一个额外的值(val)传递给父组件的某个函数。为了实现这个目标,我们使用了箭头函数来定义_onChangeHandler,并绑定了this的上下文。

在List组件的render方法中,我们使用map函数遍历this.props.inputs数组,并为每个数组元素渲染一个ListItem组件。在每个ListItem组件中,我们将_onChangeHandler作为onChange属性传递,同时将一个计算得到的值(someValue)和其他一些属性传递给ListItem组件。

在ListItem组件中,我们使用props中的属性来渲染复选框,并将_onChange函数绑定到复选框的onChange事件上。在_onChange函数中,我们将复选框的事件参数和changeHandlerValue属性值一起传递给父组件的onChange事件处理函数。

通过这种方式,我们成功地将事件参数传递给了List组件中定义的_onChangeHandler函数,并将其传递给了父组件的某个函数。

总结起来,当在React中绑定函数时,有时候需要将事件参数传递给这些函数。为了实现这个目标,我们可以使用箭头函数来定义函数,并使用bind方法来绑定this的上下文。同时,在子组件中,我们可以将事件参数和其他属性一起传递给父组件的事件处理函数。这样,我们就可以更灵活地处理React中的事件了。

0
0 Comments

问题的出现的原因是作者想要在React中绑定函数时避免使用内联函数,但是不清楚如何同时处理事件和额外的值。

解决方法是创建一个新组件,并将点击事件处理程序传递给该组件。在这个解决方法中,我们将使用一个onChange事件来展示如何传递事件参数。

首先,在代码中创建一个名为_onChangeHandler的函数,该函数将接收两个参数:事件和someValue。

_onChangeHandler = (event, value) => {
  // 处理事件和值
};
render() {
  return (
     this._onChangeHandler(e, someValue)}
    />
  );
}

在render方法中,我们将onChange事件绑定到_onChangeHandler函数。在内联函数中,我们将事件e和someValue作为参数传递给_onChangeHandler函数。

通过这种方式,我们可以在不使用内联函数的情况下传递事件参数。这种方法遵循es-lint的建议,并且使代码更加清晰易懂。

0
0 Comments

在React中,当我们绑定函数时,有时候会遇到一个问题:如何传递事件参数?下面的内容提供了一种解决方法。

一种解决方法是使用currying(柯里化)的方式。我们可以定义一个辅助方法,它返回一个函数,这个函数接收一个值和一个方法作为参数,并返回一个新的函数。在这个新的函数中,我们将事件参数(e)和之前传入的值一起传递给原始方法。这样,在绑定函数的时候,我们可以直接调用辅助方法,将值和方法作为参数传递进去。

实际上,这种方式和直接使用内联函数是完全一样的。但是,这种方式不会触发"no-bind"规则。原文中提到了这个问题。

有时候,特别是在大公司中,我们无法更改ESLint的配置。这时候,我们可以通过在代码中添加注释来禁用这个规则,以表明我们意识到了这个问题。

下面是一个示例代码:

// 辅助方法,返回一个函数
const generateHandler = (value, method) => e => method(e, value)
// 使用辅助方法绑定函数

以上就是解决这个问题的方法。通过使用currying(柯里化)和添加注释,我们可以绕过ESLint的规则,成功传递事件参数。

0