首页 > 其他分享 >Vue-mixin 混入处理

Vue-mixin 混入处理

时间:2023-11-27 23:12:18浏览次数:31  
标签:混入 Vue 登录 mixins js token 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

标签:混入,Vue,登录,mixins,js,token,mixin,组件
From: https://www.cnblogs.com/zgf123/p/17860789.html

相关文章

  • Vue3中 使用v-for嵌套 获取其他数组中的值作为key值 渲染数据
    <tbody><trv-for="(row,idx)inrows":key="idx"><tdv-for="(item,key)intitle":key="key">{{row[key]}}</td></tr>......
  • vue3 jsPlumb学习
    <template><divclass="box"><div@click="clearLine">clear</div><div@click="initConponents">line</div><div@click="getData">get</div></div>......
  • Vue Provide/Inject 使用指南
    两个inject工具函数轻松解决严格注入和Hook返回值透传问题!痛苦的经历自从使用了Provide/Inject代码的组织方式更加灵活了,但是这个灵活性的增加伴随着代码容错性的降低。相信只要是真的在项目中引入Provide/Inject的同学,一定一定有过或者正在经历下面的状况:......
  • vue指令封装(按钮权限、loading加载、slideIn窗口进入动画)
    vue指令vue本身具有一些指令,但是有些指令是vue作者自己写的,有些是第三方插件写的。v-ifv-if指令是用来控制元素是否显示的,如果值为true,则显示,如果值为false,则隐藏。<divid="app"><pv-if="isShow">我是显示的内容</p><pv-else>我是隐藏的内容</p></div><scri......
  • 记录一下vue如果全局引入scss变量
    开始首先一些普通的css,可以在App.vue中引入然后项目中会经常用到一些功能型的scss,比如mixin,和函数等,这个时候在main.js和app.vue是无效的。首先查看自己的sass和sass-loader版本,注意sass-loader的安装版本,如果是v8的版本使用prependDatea,以上的版本使用additionalData(翻......
  • vue前端截图
    <template><divclass="bigbox"> <divclass="box"ref="imageTest"> <divclass="boxTop"> 13653197159邀请您注册 <spanstyle="color:#5FFFB7;">金猫矿池</span> </div>......
  • vue3使用kindeditor富文本编辑器组件,支持上传图片(接口或base64)
    参考文章:https://blog.csdn.net/qq_27936291/article/details/1247689891.安装插件npmi@zhj-target/vue3-kind-editor--save或者yarnadd@zhj-target/vue3-kind-editor2.在vue项目中使用importVue3KindEditorfrom'@zhj-target/vue3-kind-editor'conststate=re......
  • vue中的watch监听器
    方法一:当监听某一属性的变化时,建议直接使用函数写法constvm=newVue({el:'#app',data:{username:''},watch:{username(newVal,oldVal){console.log(newVal,oldVal)}}}) 方法二:当页面初始化需要监听一......
  • vue导入excel表格
    1.vue导入模版信息。进行数据操作首先要安装 npminstallfile-saver  npminstallxlsx  npminstallscript-loader,在src下面创建一个excel文件夹,查创建2个js(Blob.js,Export2Excel.js)utils/vendor/Export2Excel.js文件/*eslint-disable*/require('script-loader!f......
  • Vue-加入购物车-判断token添加登录提示
    Vue-加入购物车-判断token添加登录提示目标:给未登录的用户,添加登录提示说明:加入购物车,是一个登录后的用户才能进行的操作,所以需要进行鉴权判断,判断用户token是否存在若存在:继续加入购物车操作不存在:提示用户未登录,引导到登录页,登录完回跳addCart(){//判断token......