首页 > 其他分享 >29-Vue脚手架-mixin 混入

29-Vue脚手架-mixin 混入

时间:2023-10-25 15:01:16浏览次数:29  
标签:hunhe2 混入 hunhe1 name vue 29 Vue mixin

mixin 混入

功能:可以把多个组件共用的配置提取成一个混入对象

使用混合:

1)第一步,定义混入

新建一个JS文件,比如mixin.js

src/mixin.js

// 分别暴露
export const hunhe1 = {
    methods:{
        showName(){
            alert(this.name)
        }
    },
    mounted() {
        console.log("你好啊!我是mixin混合中的",)
    }
}

export const hunhe2 = {
    data(){
        return{
            x:100,
            y:200
        }
    }
}

2)使用混入

局部混入(组件里面,School.vue)

import {hunhe1,hunhe2} from "../mixin"

// 局部混入
mixins:[hunhe1,hunhe2]

全局混入(main.js里面)

import {hunhe1,hunhe2} from "./mixin";

// 全局混入
Vue.mixin(hunhe1)
Vue.mixin(hunhe2)

 

案例,把多个组件共用的配置提取成一个混入对象

src/mixin.js (定义混入)

// 分别暴露
export const hunhe1 = {
    methods:{
        showName(){
            alert(this.name)
        }
    },
    mounted() {
        console.log("你好啊!我是mixin混合中的",)
    }
}

export const hunhe2 = {
    data(){
        return{
            x:100,
            y:200
        }
    }
}

src/components/Student.vue(使用混入,局部使用)

<template>
  <div>
    <!--点击标签,弹窗学生名称-->
    <h2 @click="showName">学生姓名:{{name}}</h2>
    <h2>学生性别:{{sex}}</h2>
  </div>
</template>

<script>
  // 引入一个混合(局部混合)
  // import {hunhe1,hunhe2} from "../mixin"
  export default{
    // eslint-disable-next-line vue/multi-word-component-names
    name:"Student",
    data(){
      return{
        name:"马铃薯",
        sex:"男",
      }
    },
    // methods:{
    //   showName(){
    //     alert(this.name)
    //   }
    // }

    // 局部混合
    // mixins:[hunhe1,hunhe2]
  }

</script>

src/components/School.vue(使用混入,局部使用)

<template>
  <div>
    <!--点击标签,弹窗学校名称-->
    <h2 @click="showName">学校名称:{{name}}</h2>
    <h2>学校地址:{{address}}</h2>
  </div>
</template>

<script>
  // 引入一个混合(局部混合)
  // import {hunhe1,hunhe2} from "../mixin"

  export default{
    // eslint-disable-next-line vue/multi-word-component-names
    name:"School",
    data(){
      return{
        name:"东华理工大学",
        address:"江西南昌",
      }
    },
    // methods:{
    //   showName(){
    //     alert(this.name)
    //   }
    // }

    // 局部混合
    // mixins:[hunhe1,hunhe2],

    mounted() {
      console.log("你好啊!!!!!我是School组件中的")
    }
  }

</script>

src/App.vue

<template>
  <div>
    <!--学生的信息-->
    <Student></Student>
    <hr/>
    <!--学校的信息-->
    <School></School>
  </div>
</template>

<script>
  // 引入Student组件
  import Student from "@/components/Student.vue";
  // 引入School组件
  import School from "@/components/School.vue";

  export default{
    name:"App",
    components: {
      // eslint-disable-next-line vue/no-unused-components
      School: School,
      Student: Student
    }
  }
</script>

src/main.js(使用混入,全局使用)

import Vue from "vue"
import App from "./App.vue"

// 全局混合
import {hunhe1,hunhe2} from "./mixin";

// 阻止 vue 在启动时生成生产提示
Vue.config.productionTip = false

// 全局混合
Vue.mixin(hunhe1)
Vue.mixin(hunhe2)

new Vue({
    el:"#app",
    render:h => h(App)
})

 

标签:hunhe2,混入,hunhe1,name,vue,29,Vue,mixin
From: https://www.cnblogs.com/REN-Murphy/p/17787225.html

相关文章

  • vue3 watch 用法
    <scriptsetup>import{ref,computed,watch}from'vue'constnum=ref(1)constname=ref('ming')constobj=ref({name:'小明',age:30})//watch简单类型//watch(num,(newValue,oldVal......
  • [Vue]computed和watch的区别
    computed和watch之间的区别: 1.computed能完成的功能,watch都可以完成。 2.watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作。两个重要的小原则: 1.所有被Vue管理的函数,最好写成普通函数,这样this的指向才是vm或组件实例对象。 2.所有不......
  • vue中如何使用svg,以及碰到的相应问题
    安装cnpminstallsvg-sprite-loader--save-dev创建svg文件夹存放svg图标创建icons文件夹,在icons文件夹下创建svg文件夹存放本地svg图标。vue.config.js中配置svg图片config.module.rule("svg").exclude.add(resolve("src/icons")).end();config.module.rule......
  • vue3 elementplus table表格内添加checkbox和行号
    1.仅添加复选框<el-table-columntype="selection"width="55"></el-table-column>2.添加复选框和文字行号在一列<el-table-column><template#header><el-checkboxv-model="selectAll"@change="han......
  • vue 首次加载项目,控制台报错: Redirected when going from "/" to "/login"
    第一次加载加载页面时报错如下:Redirectedwhengoingfrom"/"to"/login"viaanavigationguard. ![image](https://img2023.cnblogs.com/blog/1880163/202310/1880163-20231025113840444-1010075971.png)后续在地址栏直接添加/login,index,错误页面等均正常无报错.路由......
  • Jenkins配置java和vue构建环境
    jdk,maven,node,localtime等配置可通过挂载的方式进行配置前提条件是虚拟机中已配置好jdk,maven,node等环境注意自己虚拟机相关环境配置的路径以下样例为我自己的虚拟机中的配置路径-v宿主机(虚拟机)路径:容器路径dockerrun--namejenkins-p28081:8080-p50000:50000-v/v......
  • vue3 动态加载组件
    <el-dropdownstyle="margin:0px"><el-buttontype="primary">视图</el-button><template#dropdown><el-dropdown-menu><el-dropdown-itemv-for="dropItemindropI......
  • js中使用css变量(vue)
    html<divclass="test":style="{'--backgroundColor':backgroundColor}"></div>jscss .test{background-color:var(--backgroundColor);} ......
  • 28-Vue脚手架-props配置项
    props配置项props让组件接收外部传过来的数据1)传递数据这里需要注意,通过age="18"的方式,传递进去的数据是字符类型的,通过动态绑定:age="26"的方式,传递进去的数据是整型类型<!--这里需要注意,:age="26"代表v-bind动态绑定,传入的age是int类型--><Studentname="马铃薯......
  • Vue无线滚动不触发问题
    Vue的v-infinite-scroll="load" 会无线触发  要定义实际高度和可视高度之间关系设置style="overflow:auto;height:calc(100vh - 49px)"  100vh = 100% <divclass="box"style="overflow:auto;height:calc(100vh-100px)"><divv......