栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在React中正确使用箭头功能

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在React中正确使用箭头功能

我知道箭头函数通过不重新创建每个呈现的函数(类似于构造函数中的绑定工作方式)来使事情更高效。

这不是真的。这取决于您在哪里使用箭头功能。如果

Arrowfunction
在render方法中使用了它们,则它们将创建一个新的实例
everytime
render,就像
bind
将如何工作一样。考虑这个例子

<div onClick={()=>{this.onClick()}}>Previous</div>

在这里,每次渲染都被称为创建了一个匿名函数,该函数在调用时称为

this.onClick

但是考虑下面的情况

onClick = () => {    console.log("Div is clicked")}

在上述情况下,arrow函数并非每次都重新创建函数,而是在

An arrow function does not have its own this;the this value of the enclosing execution context is used.

实例化该类时一次将上下文绑定到React组件。这类似于如何
binding works is constructor
。这
proposed classfields for arrow functions
不是ES6功能的一部分,

要了解您要询问的内容,您必须知道一个函数从调用位置获取其上下文。检查

thisquestion
以了解更多信息。

在您的情况下,您曾经

Arrow function
定义过
prevItem
,因此可以获取封闭的React组件的上下文。

prevItem = () => {    console.log("Div is clicked")}render(){    return (         <SecondClass prevItem={this.prevItem} />    )}

现在在其子级中,即使您

prevItem
使用任何自定义上下文调用
using bind or arrowfunction
prevItem
当在父级中执行时,ie
Main.js
也将获取其封闭的React组件的上下文。并且由于您只希望执行prevItem函数,并且不想从子级向此传递任何数据,因此编写

<ThirdClass type="prev" onClick={()=>this.props.prevItem()} />

<div onClick={()=>{this.props.onClick()}}>Previous</div>

根本没用而且由于在创建新的功能只会增加性能含义

SecondClass
ThirdClass
每次。您根本不需要将这些功能定义为箭头功能,而只需编写

<ThirdClass type="prev" onClick={this.props.prevItem} />

<div onClick={this.props.onClick}>Previous</div>

因为它已经绑定在父级中。

现在,即使您必须从ThirdClass和SecondClass向这些函数传递一些其他数据,也不应直接使用

Arrow function
bind inrender
。看看这个答案
How to Avoid binding in Rendermethod



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377904.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号