不依赖Cookies实现Url和页面状态同步
✨URL状态同步
URL作为单一数据源:将路由参数作为应用状态的权威来源
状态持久化:页面刷新后能够恢复之前的状态
无Cookie依赖:完全基于路由参数实现状态管理
问题复现:
同一页面中,使用了ant design vue 的Tabs标签页组件,我们会设定一个activeKey,并且绑定一个切换面板的回调事件,这里我绑定的activeKey为路由路径,例如:
<a-tabs v-model:activeKey="activeKey" @change="onChange">
<a-tab-pane key="/article">
<template v-slot:tab>
<ReadOutlined/>
文章
</template>
<ArticleList/>
</a-tab-pane>
</a-tabs>{
path: '/:category',
name: 'Category',
component: IndexPage
}//改变tab栏触发事件
const onChange = (key) => {
router.push({
path: `${key}`,
query: {
text: searchParam.text
}
})
}当切换面板,相应的路由已经改变,但是我们一刷新页面,activeKey又初始化了,也就是又恢复了默认值。
💡解决方案
使用
Watch函数进行监听路由变化
// 页面加载时同步路由路径到activeKey
watch(
() => route.path,
(newPath, oldPath) => {
activeKey.value = newPath
},
{
immediate: true //立即执行一次
}
);分页参数也可以按照这种方式进行持久化处理,这样就避免,一刷新页面又回到了第一页
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 疯狂彩虹屁
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果