首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >created()或computed属性中的vuejs初始化数据函数(方法)

created()或computed属性中的vuejs初始化数据函数(方法)
EN

Stack Overflow用户
提问于 2020-06-02 14:29:37
回答 1查看 313关注 0票数 1

我正在制作一个简单的表格,并开始思考哪种方式更好或更准确地书写。我知道使用创建的钩子会更好,但是..我只是想知道你们怎么想的。

我们必须显示实时数据(更新周期为1秒),但它是非常可变的。因此,我在计算属性中调用了一个initData()函数,但我的前辈使用了created()钩子。

me: 1.方法:{ initData() {axios.get().then() }} 2.在计算属性中调用它(因为它每秒更新一次):

代码语言:javascript
代码运行次数:0
运行
复制
getInitData() { this.initData() return this.data}

我的前辈: 1.方法:相同2.在创建的钩子中调用它(因为它是初始化的):created() {this.initData()} 3.在计算属性中返回它(因为它每秒都会更新):

代码语言:javascript
代码运行次数:0
运行
复制
 getInitData() { return this.data}

所以..。您认为这两种情况之间的性能差异是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-02 14:40:03

如果您在computed中进行反应性属性更改,将会创建一个无限循环

更改this.data ->计算属性recalculated -->更改this.data

computed中,反应式数据被缓存,并在发生更改时触发DOM更改。现在想象一下这样的情况:一旦你收到接口响应,你改变了一个this.data,一旦this.data得到改变,它就会触发计算属性,你将再次创建一个网络请求,并再次改变this.data和computed属性。它将创建一个infinite循环

而在created钩子中,它的行为就像一个简单的方法,只有当你的component被创建时才会触发,这意味着你将第一次获得你的数据并改变this.data。在重新创建组件之前,它在任何情况下都不会再次触发

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

https://stackoverflow.com/questions/62146098

复制
相关文章

相似问题

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