首页 > 其他分享 >Vue -- Mixin混入(二)

Vue -- Mixin混入(二)

时间:2022-11-24 23:31:43浏览次数:35  
标签:Vue 自定义 -- app num Mixin 组件 属性

前言

使用Mixin混入自定义属性

自定义属性:就是直接写在组件里的属性

定义一个Mixin,并写入自定义属性

		const myMixin = {
            num: 1
        };

创建vue实例,定义自定义属性,引入myMixin

        const app = Vue.createApp({
            num: 2,
            mixins: [myMixin],
        })

最后使用options进行插值

options 构造选项,是在创建 vue 实例时传入的参数,是一个对象。 options里面有五类属性: 数据:data、 props、 propsData、 computed、methods、 Watch DOM: el、 template、 render、 renderError 生命周期钩子: beforeCreate、 created、beforeMount、 mounted、 beforeUpdate、 updated、activated、 deactivated、 beforeDestroy、 destroyed、errorCaptured 资源: directives、 filters、 components 组合: parent, mixins、 extends、 provide、 inject

	<div>{{this.$options.num}}</div>

打开浏览器页面渲染出组件的自定义属性数据。

在这里插入图片描述

将组件的自定义属性注释后,页面才渲染出Mixin混入的自定义属性数据。

在这里插入图片描述

结论:组件 自定义属性 优先级高于 Mixin 混入的 自定义属性

修改优先级

沿用使用Mixin混入自定义属性的代码,在组件后添加配置app.config,使用optionMergeStrategies属性修改优先级

		app.config.optionMergeStrategies.num = (mixinVal, appValue) => {
            return  mixinVal || appValue;
        }

页面效果:

在这里插入图片描述

局部Mixin

上面案例中使用的Mixin,就是局部Mixin。局部Mixin和局部组件的用法类似,局部Mixin在使用时,需要使用mixins声明。

定义局部Mixin:

		const myMixin = {
            data(){
                return {
                    num: 1
                }
            }
        };

使用局部Mixin:

        const app = Vue.createApp({
            mixins:[myMixin],
            template:`<div>{{num}}</div>`
        })

页面效果:

在这里插入图片描述

全局Mixin

全局Mixin类似于全局组件,默认注入每一个组件里,直接可用。

定义全局Mixin:

		app.mixin({
            data(){
                return {
                    num: 1
                }
            }
        })

使用全局Mixin:

 		const app = Vue.createApp({
            template:`<div>{{num}}</div>`
        })

页面效果:

在这里插入图片描述

Mixin存在的问题

  • 变量来源不明,不利于代码的阅读;
  • 使用多个Mixin可能会造成命名冲突;
  • Mixin和组件可能会出现多对多关系,复杂度较高;

总结

使用Mixin混入自定义属性: 组件自定义属性优先级高于 Mixin 混入的 自定义属性

修改优先级: 配置app.config,使用optionMergeStrategies属性修改优先级;

局部Mixin: 局部Mixin和局部组件的用法类似,局部Mixin在使用时,需要使用mixins声明;

全局Mixin: 全局Mixin类似于全局组件,默认注入每一个组件里,直接可用;

结语

本文到此结束

如果大家还有什么其他想法,欢迎在评论区交流!

标签:Vue,自定义,--,app,num,Mixin,组件,属性
From: https://blog.51cto.com/u_15718546/5885198

相关文章

  • JavaSpark 读取 HBASE
    1、pom.xml<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties>......
  • FOR XML PATH多行合并到一行
     FORXMLPATH有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的......
  • Objects.requireNonNull的意义是什么
    Objects.requireNonNull方法的源码是这样:publicstatic<T>TrequireNonNull(Tobj){if(obj==null)thrownewNullPointerException();returno......
  • ElasticSearch中查询(排序、高亮、分页、Filter过滤、_source筛选)
    排序(sort)sort可以让我们按照不同的字段进行排序,并且通过order指定排序的方式asc升序desc倒序GETmy_index/_search{"query":{"match":{"title":......
  • 数据库配置
    目录登录mysqlNavicat手动连接命令行连接创建一个库使用Navicat图形化操作命令行创建查看用户5.7之前版本5.7往后的版本创建用户一键建用户加赋权分布式建用户登录mysql......
  • SQL实现根据字段对表分组,并对每组进行排序取第一条数据
    一、ROW_NUMBER()ORCLE中,ROW_NUMBER()为排名函数,负责对返回结果编号;over()为分析函数,根据()中内容返回多个结果集;ROW_NUMBER()OVER(PARTITIONBY...ORDERBY.........
  • VirtualBox-Ubuntu-主机和虚拟机实现互相复制粘贴
    在VirtualBox里面安装了Ubuntu,但是需要从外层的操作系统中复制数据,然后粘贴到虚拟机里面,但是VirtualBox默认不支持这种增强性的功能,因此我们需要手动安装VBoxGuestAd......
  • Java8新特性
    Java8新特性Java8(又称为jdk1.8)是Java语言开发的一个主要版本。Oracle公司于2014年3月18日发布Java8,它支持函数式编程,新的JavaScript引擎,新的日期......
  • 只使用写字板和java原生工具做Java开发
    只使用写字板和java原生工具做Java开发bybmwhero2022.11​ 本文主旨在于通过只使用写字板、Java原生工具的方式,故意从轮子开始造起,探讨最本源的Java开发的样子,并以此......
  • 第三次打靶
    靶机介绍1)靶机名称:3-Free-MoriartyCorp2)难度级别:中-高3)靶机背景介绍:①你作为一名特工,协助调查世界最大军火商的非法交易②本次靶机共有6个任务,每完成一个任务并提交fl......