在进页面前可能需要初始化一些请求数据,用于后续的数据请求
传统的做法是在mounted中嵌套请求方法来请求数据
在vue3 中
我们可以使用 beforeRouteEnter
<script lang="ts">
export default {
async beforeRouteEnter(to: any, from: any, next) {
console.log(111);
await new Promise((resolve, reject) => {
setTimeout(() => {
console.log(222);
next(vm => {
//vm是当前组件对象 如果想要使用组件中的方法可以通过defineExpose来抛出方法、
//意思就是不仅可以获取到方法 还可以修改ref初始数据
//也可以在此更改vuex或者pinia 的数据 用于后续的请求
console.log(vm);
})
resolve(true)
}, 2000);
})
console.log("beforeRouteEnter",to ,from)
}
}
</script>
在一个 .vue文件中写两个script 第一个中就是上面这个beforeenter方法用于请求初始化数据
下面再写一个script标签用于当前组件正常工作。
原因是因为SFC这种写法中并没有将beforeRouteEnter暴露出来
以上是第一种方法
第二种方法是
{
path: '/book',
name: ’BOOK‘,
component: () => import('@/pages/book/index.vue')
beforeEnter: async (to, from) => {
//进入book的时候需要拿到书的type并剔除几种数据的类型用于初始化查数据
return await getBookType()
},
},
这种是在路由入口的地方做拦截,在请求完成后可以更新vuex或者pinia来初始化页面接口的请求入参,不过官方没有推荐这张做法,请参考
https://router.vuejs.org/zh/guide/advanced/data-fetching.html
个人比较推荐第二种,可以将每个模块的数据初始化请求接口都写到一起,调用看起来比较整齐,不会显得特别的乱
vue3以本人目前浅薄的学识来看是比较喜欢的前端框架,相较于react 18.3 ,个人使用感觉更加完善、更加简单。
分类:
vue
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通