首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >传递箭头函数与传递函数

传递箭头函数与传递函数
EN

Stack Overflow用户
提问于 2018-01-17 15:59:07
回答 6查看 5.5K关注 0票数 12

假设我有一个功能:

代码语言:javascript
运行
复制
handleChange = (e) => {
  this.setState({ [e.target.id]: e.target.value });
}

以下几点之间有什么区别:

1.

代码语言:javascript
运行
复制
<FormControl value={this.state.password} onChange={this.handleChange} />
代码语言:javascript
运行
复制
<FormControl value={this.state.password} onChange={(e) => this.handleChange(e)} />
EN

回答 6

Stack Overflow用户

发布于 2018-01-17 16:04:39

第二种情况是创建一个anonymous function,它执行handleChange方法,从而为它提供context

每次function组件呈现时,都会在第二种情况下创建一个新函数,而不是在第一种情况下创建,因为向处理程序提供了相同的handleChange方法引用。

您可能还想看看箭头如何在呈现中实现上下文绑定

票数 8
EN

Stack Overflow用户

发布于 2018-05-17 08:21:44

假设您的事件处理程序是这样在类中编写的

代码语言:javascript
运行
复制
handleChange = (e) => {
  this.setState({ [e.target.id]: e.target.value });
}

让我们来看你提到的第一个例子。

代码语言:javascript
运行
复制
<FormControl value={this.state.password} onChange={this.handleChange} />

在这里,对于每次更改,您都要传递handleChange函数的内存引用,并将事件对象传递给它。

第二种方法。

代码语言:javascript
运行
复制
<FormControl value={this.state.password} onChange={(e) => this.handleChange(e)} />

在这里,您将创建一个新的匿名函数,该函数每次发生事件更改时都将事件对象作为参数。这大大增加了垃圾收集,如果您有大型列表items.Adding,则箭头函数在本例中是多余的,因为上下文已经被绑定,这是因为您最初编写handleChange方法的方式。作为perf提示,如果在类中使用箭头函数,则对事件处理程序使用选项1。

票数 5
EN

Stack Overflow用户

发布于 2018-05-17 07:13:28

在呈现中使用箭头函数可能会导致一些性能问题。

我建议您在类属性中使用箭头函数,但必须使用第2阶段的特性。

在这里,您会发现两个选项之间有一个很好的比较:

https://medium.freecodecamp.org/react-binding-patterns-5-approaches-for-handling-this-92c651b5af56

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48305194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档