Vue-mixin 混入处理

概述

再日常开发中,对于组件内部的方法多处存在相同的特点,往往会抽离出一个公共的方法方便调用,但是由于多个组件可能都需要用到这个方法,所以通过mixin混入的方式,将该方法独立抽离出来,方便多个组件的使用。

步骤

  • 再src目录下创建一个mixins
  • 再该目录下创建一个xxxx.js文件
  • 编写对应的js代码
  • 再组件内引入import xxx from '@/mixins/xxx'
  • 再组件js代码中 通过关键字 mixins:[xxxx] 可以混入多个,后面优先级更高

完整演示:
给定义一个弹出,当用户执行某些操作时,需要用户登录才可以执行
image

export default {
  // 此处编写的就是Vue组件实例的配置项,通过一定语法,可以直接混入到组件内部
  // data 、 methods 、 computed 、 声明周期函数... 等
  // 注意点: 如果此处 和 组件内 提供了同名的 data 或 methods,则组件内优先级更高
  // 1.如果此处 和 组件内,提供了同名的 data 或 methods,则组件内优先级更高
  // 2.如果编写了声明周期函数,则mixins中的生命周期函数 和 页面的生命周期函数,会用数组管理
  //    统一执行
  methods: {
    // 根据登录状态,判断是否需要显示登录确认框
    // 1.如果未登录=>显示确认框 返回true
    // 2.如果已登录=> 啥也不干 返回false
    loginConfirm () {
      // 判断 token 是否存在
      // 1.如果token不存在,弹确认框
      // 2.如果token存在,继续请求操作
      if (!this.$store.getters.token) {
        // 弹确认框
        this.$dialog.confirm({
          title: '温馨提示',
          message: '此时需要先登录才能继续操作哦',
          confirmButtonText: '去登录',
          cancelButtonText: '再逛逛'
        })
          .then(() => {
            // 点击确认表示用户要去登录界面,此时让路由跳转
            // 如果希望,跳转到登录 =》登录后能回跳回来,需要在跳转去携带参数,(当前的路径地址)
            // this.$route.fullPath(会包含查询参数)
            this.$router.replace({
              path: '/login',
              query: {
                backUrl: this.$route.fullPath
              }
            })
          })
          .catch(() => {
            // on cancel
          })
        return true
      }
      return false
    }
  }
}

再组件中导入 loginConfirm.js文件 ,随后通过 mixins:[loginConfirm] 混入该方法
image

image

posted @   自学Java笔记本  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示