App.vue ( App.vue 是最顶级 router-view 元素所在的组件)会在 created 钩子中根据 LocalStorage 中用户相关的数据尝试帮用户自动登录,但这个过程中需要使用 axios 和后端交互,最终登录成功会给 this.$root.user 赋有效的值。
根据 url,vue-router 加载不同的子组件。一些子组件将会在 created 阶段使用到 this.$root.user 的值。
在不使用 vuex 的前提下,能否做到让那些使用到了 this.$root.user 的子组件(准确地说是使用到了 this.$
root.user.id 的子组件)绝对不会报
Error in created hook: "TypeError: Cannot read property 'id' of undefined"
的错误?
谢谢
已经做过的尝试:
将尝试登录的操作放到全局路由守卫,但这里访问不到 this.$root 。
将 App.vue 的 created 函数加 async 修饰,并将其中和后端交互的函数也用 async 修饰,在 created 使用时 await 它。结果上来看 App.vue 的 created 函数似乎是有被阻塞的,但是它被阻塞并不影响到 router-view 元素渲染子组件子组件执行自己的 created 函数。。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/777121
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.