vue如何提示保存后退出

在Vue应用中,当用户编辑内容但未保存时,需要在跳转时显示提示。错误做法是使用vuex和vue-router的beforeEach守卫,因为beforeEach在组件销毁前执行,无法获取到最新的状态。正确的解决方案是利用组件内的beforeRouteLeave导航守卫,在用户离开前检查内容是否保存,并弹出提示框,根据用户选择决定是否跳转。
摘要由CSDN通过智能技术生成

假设有这样一个需求,用户在一个页面内编辑文字,但是并未点击保存并且跳转到了下一个路由。比较好的做法应该是给出一个提示—“您编辑的内容还未保存,是否确认退出?”用户如果点击“确定”,那么不保存当前内容直接退出,用户如果点击“取消”,则取消本次路由跳转,继续留在原来的页面。

尝试的错误做法

一开始的时候我是想着使用vuex结合vue router的beforeEach导航守卫来实现。代码如下:

  • 首先在vuex中新增一个状态值—introduceState
const store = new Vuex.Store({
  strict: true,  // process.env.NODE_ENV !== 'production', 直接修改state 抛出异常
  state: {
    ....
    introduceState: false,
    ....
  },
  getters: {
    introduceState: state => state.currentMenus
  },
  mutations: {
    // 更新introduceState的值
    changeIntroduceState (state, value) {
      state.introduceState = value
    }
  }
})
  • 用户在点击跳转到另一个页面的时候会触发生命周期函数beforeDestroy,在这个函数中我们可以检测用户的编辑内容是否保存,如果尚未保存。
    如果内容尚未保存,我们就弹出一个提示框,当用户选择取消的时候,就将vuex中的introduceState值更新为true。
</script>
import { mapGetters, mapActions, mapMutations } from "vuex"
export default {
  data() {
 
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值