前阵子做业务的时候遇到一个需求,需要在用户进入系统时加一个全局的 loading 遮罩层,在页面渲染完成后关闭遮罩,在正常的用户登录,进入系统这个流程下,实现这个并没有难度:

进入登录页-用户登录-显示 loading - 进入首页 - 在首页的 mounted 钩子中关闭 loading

但主要是用户不按这套来,用户直接在一个其他页面刷新的时候,这套就不适用了,除非你去每个页面的 mounted 钩子中都写一个关闭loading 的方法,但这样做明显不现实,页面少还好说,但我们的系统已经有几十个页面,每个都加一遍,实在过于麻烦。

后来我 Google 了一番,查到了 @hook:mounted 这个事件可以监听子组件的生命周期,这样我把它加 <router-view /> 上,就实现了监听每个页面的 mounted 生命周期,然后在回调中写入关闭 loading 的方法,就实现了效果。

参考链接