vue-router文档里面route的data属性是用于加载和设置当前组件的数据的
但是,我在组件的ready状态下发送请求感觉也是挺合理的,而且切换几个view之后不会重新请求。
而如果在route的data中设置请求的话,似乎每次都需要重新请求。
是不是可以认为,如果数据不需要每次切换都重新请求的,就不用在route里面请求?
你的数据可以做几级缓存,比如本地存储,访问接口,
if(本地存储){
}else{
访问接口
}
第一次访问的时候,肯定是访问接口的,拿到数据后存到本地存储,再赋值给data中的变量,以后进来就直接拿本地存的了
写在ready里面 如果你route是keep的话,第2次进来是不会执行的。
data 不是个属性,它是个路由切换的时候的一个生命周期函数。它获取一个 transition
对象作为参数,这个特点是组件的 ready 阶段所不具有的。
当路径包含动态片段的时候,有时候需要根据这个动态的值来决定渲染的结果,比如说:
// router.js
// 根据 username 的不同,渲染不同用户的主页
router.map({
'/user/:username': UserView
}
})
// UserView.vue
route: {
data (transition) {
let username = transition.to.params.username
// ...
}
}
这种情况必须要在 route 的生命周期函数里面来处理。
个人理解,route的data可以用于获取路由参数,通过这些参数发送请求,取得数据,可以实现“组件刚载进来就已经拿到数据并完成渲染”。如果放在ready里面,得是“组件加载进来完成以后再请求数据”,感觉会没那么迅速,而且有时候某些场合,比如组件的嵌套,放在route的data里面请求数据是更合适的。
不过即使如此,我也觉的LZ的理解也是可以的,毕竟灵活运用嘛