vue路由的两种状态

vue路由的两种状态


1、默认的是hash模式,表现形式(www.abc.com/#/list);即在url中有个#
这个#前面是域名,#后面是位置;当页面变化的时候改变#后面的值,切换页面的位置,达到url不改变,页面不刷新,即单页面应用。
这个可以用a标签的锚点来解释:

<a href="#one">one</a>
<div id="one">one</div>

当点击a标签的时候页面会跳到div id=one所在的位置
当改变#后面的内容的时候浏览器会记录访问历史(可以前进或后退)

2、HTML5 history模式
history模式是HTML5 的新模式,来模仿完整的url实现页面无刷新前进后退
方法:back() 后退
forward() 前进
go(1) 前进 go(-1) 后退
pushstatus(添加状态)
replacestatus(切换状态)

Vue路由跳转时,组件的状态会被重新初始化,如果想要在路由跳转时保存组件的状态,可以使用两种方法: 1. 使用keep-alive组件 keep-alive组件可以缓存组件的状态,当组件被销毁时,keep-alive会缓存组件的状态,下次再次渲染组件时,会直接从缓存中加载组件的状态,而不是重新初始化。 使用方法: 在路由配置中,将要缓存的组件包裹在keep-alive组件中即可。 ```javascript { path: '/example', name: 'example', component: () => import('@/views/example.vue'), meta: { keepAlive: true // 开启缓存 } } ``` 在组件中,可以通过activated和deactivated生命周期钩子函数来处理组件被激活和离开缓存时的操作。 ```javascript export default { activated () { // 组件被激活时的操作 }, deactivated () { // 组件离开缓存时的操作 } } ``` 2. 使用Vuex Vuex是Vue状态管理工具,可以用来在组件之间共享状态。如果需要在路由跳转时保存组件的状态,可以将组件的状态保存在Vuex的store中,下次再次渲染组件时,从store中读取状态即可。 使用方法: 在Vuex的store中,定义一个变量来保存组件的状态。 ```javascript const store = new Vuex.Store({ state: { exampleState: {} }, mutations: { setExampleState (state, data) { state.exampleState = data } } }) ``` 在组件中,可以通过computed属性来读取store中的状态,通过watch属性来监听状态的变化。 ```javascript <template> <div>{{ exampleState }}</div> </template> <script> export default { computed: { exampleState () { return this.$store.state.exampleState } }, watch: { exampleState (newVal, oldVal) { // 监听状态变化的操作 } }, mounted () { this.$store.commit('setExampleState', {}) } } </script> ``` 在路由跳转时,可以调用Vuex的mutations来修改store中保存的状态。 ```javascript methods: { goToExample () { this.$store.commit('setExampleState', { name: 'example' }) this.$router.push('/example') } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值