• vue,mixins混入


    痛点:当我们的项目越来越庞大,项目中的某些组件之间可能会存在一些相似的功能,这就导致了在各个组件中需要编写功能相同的代码段,重复地定义这些相同的属性和方法,导致代码地冗余,还不利于后期代码的维护。

    mixins(混入),官方的描述是一种分发 Vue 组件中可复用功能的非常灵活的方式,mixins 是一个 js 对象,它可以包含我们组件中 script 项中的任意功能选项,如:data、components、methods、created、computed 等等。我们只要将公用的功能以对象的方式传入 mixins 选项中,当组件使用 mixins 对象时所有 mixins 对象的选项都将被混入该组件本身的选项中来,这样就可以提高代码的重用性,并易于后期的代码维护。

    需求:购物app有的页面游客可以访问,有的页面需要登录才可以访问,需要判断用户是否登录,没有登录提示去登陆,已登录的话,就啥也不敢,直接放行。这样的代码往往复用性很强。

    应用:

     

     loginConfirm .js:

    1. export default {
    2. // 此处编写的就是 Vue组件实例的 配置项,通过一定语法,可以直接混入到组件内部
    3. // data methods computed 生命周期函数 ...
    4. // 注意点:
    5. // 1. 如果此处 和 组件内,提供了同名的 data 或 methods, 则组件内优先级更高
    6. // 2. 如果编写了生命周期函数,则mixins中的生命周期函数 和 页面的生命周期函数,
    7. // 会用数组管理,统一执行
    8. created () {
    9. // console.log('嘎嘎')
    10. },
    11. data () {
    12. return {
    13. title: '标题'
    14. }
    15. },
    16. methods: {
    17. sayHi () {
    18. // console.log('你好')
    19. },
    20. // 根据登录状态,判断是否需要显示登录确认框
    21. // 1. 如果未登录 => 显示确认框 返回 true
    22. // 2. 如果已登录 => 啥也不干 返回 false
    23. loginConfirm () {
    24. // 判断 token 是否存在
    25. if (!this.$store.getters.token) {
    26. // 弹确认框
    27. this.$dialog.confirm({
    28. title: '温馨提示',
    29. message: '此时需要先登录才能继续操作哦',
    30. confirmButtonText: '去登陆',
    31. cancelButtonText: '再逛逛'
    32. })
    33. .then(() => {
    34. this.$router.replace({
    35. path: '/login',
    36. query: {
    37. backUrl: this.$route.fullPath
    38. }
    39. })
    40. })
    41. .catch(() => {})
    42. return true
    43. }
    44. return false
    45. }
    46. }
    47. }
      import loginConfirm from '@/mixins/loginConfirm'

    mixins属性和name、data同级。 

    1. name: 'paymentIndex',
    2. mixins: [loginConfirm],

    在添加购物车的时候:

    1. async addCart () {
    2. if (this.loginConfirm()) {
    3. return
    4. }
    5. // 省略部分逻辑代码
    6. this.$toast('加入购物车成功')
    7. },

     

     

  • 相关阅读:
    VSC/SMC(十五)——基于模糊逼近的积分滑模控制
    刷题日记——将x减到0的最小操作数
    LabVIEW利用人工神经网络辅助进行结冰检测
    【技能树笔记】网络篇——练习题解析(四)
    创建型模式-原型模式
    excel导入poi中的数据使用cell.getStringCellValue()获取报错
    【代码】Android|判断asserts下的文件存在与否,以及普通文件存在与否
    【游戏技术】求生之路1支持2代全官方地图补丁包2023版
    Java设计模式之适配器模式
    MySQL的ACID
  • 原文地址:https://blog.csdn.net/m0_59259076/article/details/133679584