踏平vue3的坑

踏平vue3的坑

vue2隔了很久没有写,现在直接跳vue3发现之前不熟悉的写法又回来了。

需求

  1. vue3中如何实现A页面跳转到B页面,在B页面操作了再返回到A页面,A页面填写的数据还存在。
  2. 列表页面点击进入详情页面,从详情页面返回到列表,选择的位置不变

主要实现原理是通过keepalive

操作步骤:

  1. 在router.js 文件中配置meta属性值
{
    path: "/add",
    name: "add",
    component: () => import("@/views/add.vue"),
    meta: {
      keepAlive:true
    },
    beforeRouteLeave: (to, from, next) => {
      console.log(to.meta);
    }
  },
  1. 配置router-view中配置
    <transition name="container-right-transition" mode="out-in">
    <router-view v-slot="{ Component }">
		<keep-alive>
		  <component :is="Component" :key="$route.name" v-if="$route.meta.keepAlive" />
		</keep-alive>
		<component :is="Component" :key="$route.name" v-if="!$route.meta.keepAlive" />
	</router-view>
</transition>

注意错误示范 ,千万别把transition写在里面,写在里面效果出不来,卡了半天

 <router-view class="router-view" v-slot="{ Component }" v-if="!$route.meta.keepAlive"> 
      <transition :name="transitionName">
        <component :is="Component" />
      </transition>
    </router-view> 
  1. 在跳转的新页面中配置
<script lang="ts">
import { onBeforeRouteLeave } from 'vue-router'
....
setup(props, ctx) {
    onBeforeRouteLeave((to,from,next)=>{ //页面路由消失之前
	    console.log("onBeforeRouteLeave")
	      to.meta.keepAlive = true
	      next()
	    })
    }
   const onClickLeft = () =>{ // 返回页面
      router.back();
   } ;
....
</script>

注意: 如果自己引入的keepalive失效的化可以关注一下onBeforeRouteLeave是否被触发,或者看看keepalive是否正确引入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值