首页 > 其他分享 >Vue中的mixins和extends是什么,有什么联系和区别?

Vue中的mixins和extends是什么,有什么联系和区别?

时间:2024-02-22 14:16:14浏览次数:21  
标签:Vue created logMixin mixins extends mixin 组件

在 Vue.js 中,mixinextends 都是用来处理组件复用和组件之间共享逻辑的方式,但它们有不同的特点和应用场景。

Mixin(混入)

Mixin 是一种可以包含可复用 Vue 组件选项的对象。通过使用 mixin,我们可以将一些公共的选项和逻辑提取出来,然后混入到多个组件中。这样做可以有效地避免重复编写相似的代码,并且可以实现组件之间的逻辑复用。

以下是一个简单的示例,展示了如何在 Vue.js 中使用 mixin

// 定义一个名为 `logMixin` 的 mixin 对象
const logMixin = {
  created() {
    console.log('Component created')
  }
}

// 在组件中使用 `logMixin`
Vue.component('my-component', {
  mixins: [logMixin],
  template: '<div>My Component</div>'
})

在这个示例中,我们定义了一个名为 logMixin 的 mixin 对象,它包含了一个 created 钩子函数,用于在组件创建时打印日志。然后我们将 logMixin 混入到名为 my-component 的组件中,这样就可以在组件创建时自动执行 logMixin 中定义的逻辑。

Extends(继承)

Extends 是一种可以用来创建组件的扩展版本的方式。通过使用 extends,我们可以基于一个已有的组件创建新的组件,并且可以对新组件进行定制化的修改。

以下是一个简单的示例,展示了如何在 Vue.js 中使用 extends

// 定义一个基础组件
const baseComponent = {
  template: '<div>Base Component</div>'
}

// 基于基础组件创建一个新的组件
const extendedComponent = Vue.extend({
  extends: baseComponent,
  created() {
    console.log('Extended Component created')
  }
})

在这个示例中,我们首先定义了一个名为 baseComponent 的基础组件,然后使用 Vue.extend 方法基于 baseComponent 创建了一个新的组件 extendedComponent。新组件继承了基础组件的模板和选项,并且可以添加自己的逻辑,如 created 钩子函数。

总的来说,mixinextends 都是用于实现组件复用和逻辑共享的方式,但是它们有不同的特点和使用场景。mixin 用于将公共选项和逻辑混入到多个组件中,从而实现代码复用;而 extends 用于基于一个已有的组件创建新的组件,并且可以对新组件进行定制化的修改。

标签:Vue,created,logMixin,mixins,extends,mixin,组件
From: https://www.cnblogs.com/crispyChicken/p/18027181

相关文章

  • Vue学习笔记8--MVVM
     总结:MVVMM:模型Model,对应data种的数据V:视图View,模版     VM:视图模型ViewModel,Vue实例对象观察发现:data种所有的属性,最后都出现在vm身上。vm身上所有的属性及Vue原型上所有属性,在Vue模版种都可以直接使用。示例如下所示:<!DOCTYPEhtml><htmllan......
  • vue中filters和computed有什么区别
    在Vue.js中,filters和computed都是用来处理模板中的数据的方式,但它们有不同的应用场景和使用方式。filters是一种简单的函数,可以在模板中对数据进行格式化。它们可以用于在显示数据之前对其进行处理,例如对日期格式进行转换、将文本转换为大写或小写字母等。filters没有缓存......
  • Vue学习笔记7--el和data的两种写法
    方式一:eldata  //方式一:eldata//constone=newVue({//el:'#root',//data:{//name:'vue',//mydata://{//oneAtt:'我是一个嵌套对象的属性哦',//......
  • vue中花括号表达式,string类型除以number类型返回NaN值
    bug:数据为0时,el-progress的color还是有颜色,应该是没有颜色的第一步解决:设置动态color<el-progress:show-text="false":percentage="(oilCarOccupationNum/totalNum)*100":color="oilCarOccupationNum?'......
  • Vue学习笔记6--数据绑定
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Vue数据绑定</title>......
  • vue3 ts用正则表达式校验两位小数和校验整数的方法
    <el-col:span="12"><el-form-itemlabel="贷款金额"prop="loanAmount"><el-input-numberv-model="props.loanAmount":min="0"@change="checkIntegerNumber('loanAmount')"controls......
  • 若依+vue3配置菜单后设置缓存但实际上切换页签重复请求接口
    刚接触ruoyi,配置菜单时发现一个问题,配置好了,也设置了缓存,但是切换tab页签还是会重复请求接口,配置如图:仅是举例,如上图,系统管理->角色管理列表配置,路由地址是role,缓存也勾选了,但实际上第一次打开角色管理页签第一次请求了数据,再跳转其他页面,回到角色管理页签时,又一次请求了数据,实......
  • Vue循环实现累加的七种方法
    <body><divid="app"><h2>总价:{{totalPrice}}</h2></div><script>constvm=newVue({el:"#app",data(){return{......
  • ssts-hospital-web-master项目实战记录六:项目迁移方案大纲(html -> vue)
    记录时间:2024-02-21(一)公共资源部分Inc/cssInc/flashInc/imagesInc/jsInc/voice(二)页面部分1.主页及其组成(1)index.html->App.vue(2)MainPage*.html->views/main-page*MainPage1.html->views/main-page1MainPage2.html->views/main-page2MainPage3.html->......
  • Vue项目中关闭Eslint检查
    1.问题由于Eslint检查总是无法通过编译,在我们写一些简单的程序时显得十分麻烦,便想要关闭它2.解决这里有两种情况2.1使用WebStorm自带的Eslint导致的检查这种情况只要在WebStorm中的设置里关闭即可2.2Vue项目创建时选择了Eslint检查,生成了相应的js文件参考:vue关闭eslint(......