- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在感到手动功能/对象绑定(bind)以及与范围相关的问题令人头疼之后,我开始使用箭头功能,但非常清楚的是,我知道使用正常功能(ES5)比使用箭头功能(ES6)更好。
我对这些功能的理解
React中的正常功能:
- Bind object/function manually in order to play with state or props inside the function and to avoid scope related issues
- Bind object/function always in constructor but not directly in render
- If you do it in constructor then Webpack creates new object/function in bundle.js file only once when your component renders for the first time
- If you do it directly in render then Webpack will create a new object/function in bundle.js file every time your component renders and re-renders
- If you don’t bind then you can’t access state or props. You have to assign current object to a local variable otherwise this.state or this.props is undefined
- No need to bind an object/function in constructor nor render
- You no need to depend on local variable interms of current object i.e., let that = this;
- You will not have scope issues and object/function binding takes automatically
Is this true? Which is Recommended?
最佳答案
那里有很多答案,但人们总是感到困惑。我知道这一点是因为我前一段时间感到困惑。一段时间后,我掌握了这些概念。
- Bind object/function manually in order to play with state or props inside the function and to avoid scope-related issues
this
上下文时,可以将该函数绑定(bind)到
this
。例如在回调函数中。
class App extends React.Component {
state = {
name: "foo",
}
aFunction() {
console.log( this.state.name );
}
render() {
return <div>{this.aFunction()}</div>;
}
}
this
指向您的类,并且您不会丢失其上下文。但是,如果您在按钮之类的回调中使用函数,则必须将其绑定(bind):
class App extends React.Component {
state = {
name: "foo",
}
aFunction() {
console.log( this.state.name );
}
render() {
return (
<div>
<button onClick={this.aFunction}>Click</button>
</div>
);
}
}
<button onClick={this.aFunction.bind(this)}>Click</button>
- Bind object/function always in constructor but not directly in render
If you do it in constructor then Webpack creates new object/function in bundle.js file only once when your component renders for the first time
If you do it directly in render then Webpack will create a new object/function in bundle.js file every time your component renders and re-render
- If you don’t bind then you can’t access state or props. You have to assign current object to a local variable otherwise this.state or this.props is undefined
state
或
props
不相关。这与使用
this
有关。
1.No need to bind an object/function in constructor nor render
- You no need to depend on local variable interms of current object i.e., let that = this;
- You will not have scope issues and object/function binding takes automatically
But my query is that I heard that it’s recommended to use normal function and bind it in constructor rather than using arrow function because arrow functions create new object/function in Webpack bundle.js every time your component renders & re-renders.
render() {
return (
<div>
<button onClick={() => this.aFunction()}>Click</button>
</div>
);
}
render() {
return (
<div>
<button onClick={this.aFunction}>Click</button>
</div>
);
}
()
,则在每个渲染中都会重新创建此函数。常规或箭头一无所谓。如果您以某种方式调用它,那么您正在重新创建它。这适用于像
aFunction.bind(this)
这样的渲染中的绑定(bind)。我在那里看到
()
。
{
items.map( item =>
<button onClick={() => this.aFunction(item.name)}>Click</button>
)
}
Item
组件并将其映射。传递
item
,
aFunction
作为 Prop 。然后,在此组件中使用处理程序函数,即可使用您的函数。
const Item = ( props ) => {
const handleClick = () => props.aFunction( props.item.name );
return (
<button onClick={handleClick}>Click</button>
);
}
onClick
处理程序,它将调用您的真实函数。在每个渲染中均不会重新创建任何功能。但是,不利的一面是,您需要编写一个单独的组件和更多代码。
When I see an arrow function in the class I think that: 'This function is being used/called outside of this class'. If I see a regular one I understand that this function called inside the class.
关于reactjs - react : Which is recommended arrow or normal function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52031147/
最近一篇关于 HTML5 的文章说,Proposed Recommendation 日期是 2022 年,Candidate Recommendation 日期是 2012 年。 我想知道“Propo
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是无关紧要的,因
我知道缩写SVM(Support Vector Machines)和 SVD(Singular Value Decomposition)并且 SVM 和 SVD 都用于推荐引擎。 用外行的话来说,这两
我想尝试构建一个推荐系统,我的意思是一种算法,可以查看用户发布的偏好和/或评论,然后为他们提出建议,类似于 netflix 或亚马逊使用的算法。 什么是学习如何编写这样的东西的好资源?我应该从哪里开始
这是一个理论问题。假设我已经实现了两种类型的协同过滤:基于用户的 CF 和基于项目的 CF(以 Slope One 的形式)。 我有一个很好的数据集供这些算法运行。但是我想做两件事: 我想向数据集添加
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭去年。 Improve th
我正在阅读 CF 中的一些论文,并注意到大多数最先进的方法仅基于评级矩阵上的不同分解方法。我想知道是否有一些将内容信息(例如用户特征和项目特征)组合成因式分解的代表性作品。有什么想法吗? 最佳答案 我
例如:我有一个像这样的主文件 userid itemid rating 1
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 7年前关闭。 Improve t
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
我正在构建一个基于内容的电影推荐系统。很简单,只要让用户输入电影名称,系统就会找到特征最相似的电影。 在计算相似度并按降序排列得分后,我找到5个相似度得分最高的相应电影并返回给用户。 到目前为止,当我
我有这个问题:为 facebook 正确配置的页面: (我也尝试过:) (还有其他一些) 在head中,对应的OG代码:app_id、url、type、title、image、de
最近发现好几个网站都有“Recommended for You”之类的东西,比如youtube,或者facebook,可以研究我的使用行为,推荐一些内容给我... ...我会想知道他们如何分析这些信息
我在https://reactrouter.com/en/main/hooks/use-navigate中看到“在加载器和操作中使用重定向通常比在这个钩子中使用重定向更好”,所以我应该将useNavi
嘿,对于任何做过这件事的人来说,这只是一个简单的问题。我想创建一个视频管网站。我以前做过文件上传,但想知道是否有人可以就我打算做什么给我建议。 我计划的方式就是在我的网页目录下有一个文件夹,病毒扫描和
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 5年前关闭。 Improve this qu
在构建网站时,例如问答网站或社区论坛网站,仅了解 HTML、CSS、PHP、MySQL 和 javascript 是否足以使网站动态化? 我之所以这样说,是因为我和我的老师交谈时,他说主要网站使用多种
据我所知,Embedly刚刚开始将“推荐”视频的版本提升到YouTube在其“Cards”产品上嵌入的底部。有什么办法可以删除它们? Embedly Recommended Videos 我们将Emb
我想使用 prediction.io 构建推荐服务。我认为 Universal Recommender ( http://templates.prediction.io/PredictionIO/te
我是一名优秀的程序员,十分优秀!