【发布时间】:2020-10-08 07:45:18
【问题描述】:
我的一些 Vue js 组件有一个奇怪的问题,让我解释一下。我只在数据初始化后渲染我的组件模板,如下所示:
<template>
<div>
<div v-if='!isLoading'>
<!-- content -->
</div>
<div v-else>...</div>
</div>
</template>
在这个组件的 created 方法中,我从 store 中获取了一些数据并将 isLoading 设置为 false ,就像这样。
data() {
return {
variable: null,
isLoading: true,
}
},
created() {
this.variable = this.$store.getters['someModule/someGetter']
this.isLoading = false
}
这就是奇怪行为发生的地方。即使我在 created 方法中将 isLoading 变量更新为 false,组件模板也不会更新。
当我在创建方法的末尾将 isLoading 变量记录到控制台时,它会记录为 false,就像我设置它一样。但是当我检查 Vue js 工具中的 isLoading 变量时,它仍然设置为 true...
假设这个组件在“/content”中呈现。当我将路由从“/”更改为“/content”时,就会发生这种奇怪的行为。当我在“/内容”路线上刷新应用程序时,这不会发生。当我从 '/' 到 '/other-content' 再到 '/content' 时,它也不会发生。
任何关于为什么会发生这种情况的想法将不胜感激。
谢谢,祝你有美好的一天!
【问题讨论】:
-
你能在这个
created钩子里放一个console.log并检查它是否总是被调用吗? -
您为什么不尝试使用
mounted生命周期挂钩? -
您是从 API 获取数据吗?如果是这种情况,
async/await将在created()挂钩上很方便。
标签: vue.js vuejs2 vuex vue-router