Vue(keep-alive)指定单页返回到页面不刷新,即保存状态
2020-06-04 05:08
543 查看
遇到的问题
在开发过程中,从form单页跳转到品牌选择页,选择成功后返回到form页,需要保持form页的状态不变,即内容不刷新。
众所周知,我们可以用keep-alive来实现,keep-alive是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。
实现所有页面不刷新
<keep-alive> <router-view ></router-view> </keep-alive>
但是这样并不是我所需要的效果,我只需要从品牌页跳转到form页实现不刷新。
实现指定页面返回不刷新
- 在路由router/index.js里面,在需要被缓存的组件路由设置keepAlive:true
{ path: '/form', name: 'form', component: form, meta:{ keepAlive:true, title: '表单应用' } },
- 在App.vue把代码修改成如下。
解释:路由的meta属性的keepAlive属性值为true时页面保存状态,其他情况不保存状态
<keep-alive> <router-view v-if="$route.meta.keepAlive"></router-view> </keep-alive> <router-view v-if="!$route.meta.keepAlive"></router-view>
- 在form.vue修改
解释:form页跳转到其他页面时,把form页的keepAlive值设置为false
//修改form的keepAlive值为false时,再次进入页面会重新请求数据,即刷新页面 beforeRouteLeave(to,from,next){ from.meta.keepAlive = false; next(); },
- 在品牌页修改
解释:品牌页跳转到form.vue的时候,把form组件的keepAlive值设置为true,缓存form的状态,其他时候还是false
beforeRouteLeave(to,from,next){ if(to.path == "/form"){ to.meta.keepAlive = true; }else{ to.meta.keepAlive = false; } next(); },
相关文章推荐
- vue单页 使用keep-alive页面返回不刷新
- vue 返回上一页 页面不刷新 keep-alive
- 解决vue单页使用keep-alive页面返回不刷新的问题
- vue单页应用在页面刷新时保留状态数据的方法
- vue 页面返回记住滚动条上次浏览位置(keep-alive)
- vue自动缓存keep-alive当前页面数据,包括选择框里面选择的内容或者搜索框选好的内容,用vue的activated更新最新的数据,更新返回的页面数据
- vue使用this.$bus+keep-alive解决组件间跳转传参,参数无法保存问题
- vue 实现返回上一页不请求数据keep-alive
- vue2.0 keep-alive实现缓存页面
- vuex + keep-alive实现tab标签页面缓存功能
- vue+el-menu实现路由刷新和导航栏菜单状态保持(局部刷新页面)
- 第七章 返回刷新页面的问题 (改变上级页面的状态)
- 使用keep-alive 实现 页面回退不刷新内容
- Vue路由开启keep-alive缓存页面
- 页面添加汉字用ajax发送请求,数据库保存后返回到页面,刷新页面出现乱码
- Vue利用keep-alive实现页面缓存
- vue2.0 keep-alive 缓存页面数据 3ff0
- Vue 部署单页应用,刷新页面 404/502 报错
- vue页面跳转并传递参数 保存参数到网址?a=&b= 解决 刷新页面 无法保存接收到的参数情况
- vue后台系统 从详情页面 返回列表页面时 保存列表页原有显示 条件结果等显示