vue-router切换时loading效果实现
实现原理
1. 可以在vuex中维护一个isLoading 的变量
2. 在 router.beforeEach 钩子中 设置 isLoading = true , 在 router.afterEach 中 设置 isLoading = false
Vuex:
actions.js:
export default { onLoading(context, isLoading) { context.commit('setLoading', isLoading); } };
mutations.js:
export default { setUser(state, user) { state.user = user; }, setUserPlaylist(state, playlist) { state.userPlaylist = playlist; }, setCount(state, count) { state.count = count; }, setLoading(state, isLoading) { console.log(isLoading); state.isLoading = isLoading; } };
state.js:
export default { user: null, userPlaylist: [], count: 0, isLoading: null };
在main.js中:
router.beforeEach((to, from, next) => { store.dispatch('onLoading', true); console.log(store.state.isLoading); next(); }); // 这里为了让效果明显一些加了延时 router.afterEach((to, from) => { setTimeout(function() { store.dispatch('onLoading', false); console.log(store.state.isLoading); }, 1000); });
3. 在根组件(即所在的父组件)上 放置一个Loading组件,例如:
computed: { ...mapState(['count', 'isLoading']), keyword() { return this.$route.params.keywords; } },
完成
记录自己的采坑之路,需要时方便查找
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现