在 Render 函数 React js 中编写内联函数方法与普通方法之间的区别

Posted

技术标签:

【中文标题】在 Render 函数 React js 中编写内联函数方法与普通方法之间的区别【英文标题】:Difference between writing inline function methods vs normal method inside Render function React js 【发布时间】:2021-01-06 03:01:25 【问题描述】:

我发现在调用按钮的 onClick 函数和将参数传递给渲染内部的方法之间存在难以理解的区别,我的问题是为什么我们使用 <button onClick=this.handleClick>Click</button><button onClick=()=>this.handleClick(argument)>Click</button> 内部使用箭头是什么意思,我知道这表明一个函数,在循环时我想发送我只能使用<button onClick=()=>this.handleClick(argument)>Click</button> 方法但我能够使用<button onClick=this.handleClick>Click</button> 方法来完成的参数,有人可以解释一下这些差异。

 handleDel = (id) => 
    this.setState( todo: this.state.todo.filter((item) => item.id !== id) );
  ;

以及为什么我们除了绑定之外再次使用上面的箭头函数方法,因为我在声明 onclick <button onClick=()=>this.handleClick(argument)>Click</button> 时已经使用过,我们不能像这样传递参数<button onClick=(para)=>this.handleClick(argument)>Click</button> 而不是

 handleDel = (id) => 
   
  ;

【问题讨论】:

这能回答你的问题吗? How to decide when to pass parameter & when not 该链接清楚地解释了如何传递参数和参数,但为什么我们在 onClick vs 我想知道这两者的区别 这是箭头函数的语法。在尝试在顶部添加 JSX 和 React API 之前,您应该通过基本的 ES6 教程。 【参考方案1】:

在 React 中,我们需要传递一个函数作为事件处理程序,请参考here 了解更多关于在 React 中处理事件的信息。因此,在任何一种情况下,我们都传递了一个函数,但略有不同。

当您不想向事件处理函数发送任何自定义参数时,我们使用<button onClick=this.handleClick>Click</button>。这种方式默认event对象被发送到处理程序,可以根据需要使用。
const handleClick = (event) =>  ..... 

//....some code
<button onClick=this.handleClick>Click</button>
但是当您想向处理函数发送一些参数时,我们会将实际的事件处理程序包装在一个匿名函数中,例如() =&gt; this.handleClick(argument)
const handleClick = (data) =>  ..... 

//....some code
<button onClick=() => this.handleClick(argument)>Click</button>

除了参数,如果我们想传递事件对象,那么我们可以像下面那样做

const handleClick = (event, data) =>  ..... 

//....some code
<button onClick=(e) => this.handleClick(e, argument)>Click</button>

【讨论】:

以上是关于在 Render 函数 React js 中编写内联函数方法与普通方法之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

[react] render函数中return如果没有使用()会有什么问题?

React 类组件及函数组件结合Lodash debounce需要注意的问题和一种解决方法

React 之 render props 的理解

如何使用 React JS 在 SVG 圆圈内放置文本?

React生命周期函数理解

在 React 函数组件中编写 switch 语句以进行渲染的正确方法是啥?