vue-mixins和vue高阶组件
我们在开发过程中,因为需求的变更,往往会遇见对现有组件的改造和扩展。
那么我们有什么方法对现有组件进行改造和扩展呢?
常见的我们可以使用mixins方式
下面就让我们来看一下怎么使用mixins方式对组件进行改造
我们来先创建一个简单的组件,如一个button和一个数字,点击一次数字加一
<template>
<div class="home">
<p>{{ count }}</p>
<button @click="addcount()">新增</button>
</div>
</template> <script> export default {
name: 'homeworld',
data () {
return {
count: 0
}
},
methods: {
addcount () {
this.count++;
}
}
}
</script>
如果我们现在想改变需求,点击按钮,数字新增,但是新增我的值我们自己定义
使用mixins实现,下面是改造过后的组件
<script>
import helloworld from './HelloWorld'
export default {
name: 'homeworld',
props: ['index'], // index为传入的数量
mixins: [helloworld], // mixins 原先的组件
methods: {
//重写 addcount 方法
addcount () {
this.count += parseInt(this.index);
}
}
}
</script>
如果我们调用下面的组件并且传入属性index=5, 那么我们就会实现没点击一次count+5

使用mixins我们确实可以实现对现有组件的改造,但是他也是有一些缺点的,
1.我们必须要知道改造组件的内部结构,就如我们不知道点击事件名,那么我们就不能重写新的点击事件,我们也需要知道组件的内部属性等等。
2.两个组件有很强的依赖性,如果是嵌套加嵌套,代码就很难去追寻本源,太乱了。
那么我们有没有更好的方法去对组件进行扩展呢?
答案是有的我们可以使用高级组件,专业术语是HOC,其实就是包裹组件的组件
其实常见的高阶组件我们经常使用,如keep-alive, transition,一个是缓存组件,一个是动画
Vue目前还是使用mixin作为官方的组件复用方式。
如果想了解更多的hot可以看看这篇文章
https://github.com/coolriver/coolriver-site/blob/master/markdown/vue-mixin-hoc.md
- 暂时由热心人士产出了一个npm包: vue-hoc来帮助Vue方便地实现HOC.
- 官方暂时不考虑将HOC加入vue core中,因为觉得相比于mixin的优势不够巨大。
自己也试了一些,感觉hoc达不到自己想要的那种效果。可能还是自己不够理解。
vue-mixins和vue高阶组件的更多相关文章
- vue的高阶组件
探索Vue高阶组件 探索Vue高阶组件的使用 Vue高阶组件的使用方法 高阶组件应用-组件重新实例化 深入理解React 高阶组件 探索Vue高阶组件 2018-01-05 探索Vue高阶组件 Vue ...
- vue源码cached高阶函数解析
1.源代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...
- Mixins 改成使用高阶组件调用
把组件放在另外一个组件的 render 方法里面, 并且利用了 {...this.props} {...this.state} 这些 JSX 展开属性 对比下2种代码: 原始方式: <!DOC ...
- 浅析为什么用高阶组件代替 Mixins
转载来源 感谢分享 Mixins 引入了无形的依赖 应尽量构建无状态组件,Mixin 则反其道而行之 Mixin 可能会相互依赖,相互耦合,不利于代码维护 不同的 Mixin 中的方法可能会相互冲突 ...
- 聊聊React高阶组件(Higher-Order Components)
使用 react已经有不短的时间了,最近看到关于 react高阶组件的一篇文章,看了之后顿时眼前一亮,对于我这种还在新手村晃荡.一切朝着打怪升级看齐的小喽啰来说,像这种难度不是太高同时门槛也不是那么低 ...
- react_结合 redux - 高阶函数 - 高阶组件 - 前端、后台项目打包运行
Redux 独立的集中式状态管理 js 库 - 参见 My Git 不是 react 库,可以与 angular.vue 配合使用,通常和 react 用 yarn add redux import ...
- React文档(二十四)高阶组件
高阶组件(HOC)是React里的高级技术为了应对重用组件的逻辑.HOCs本质上不是React API的一部分.它是从React的组合性质中显露出来的模式. 具体来说,一个高阶组件就是一个获取一个组件 ...
- React高阶组件总结
在多个不同的组件中需要用到相同的功能,这个解决方法,通常有Mixin和高阶组件. Mixin方法例如: //给所有组件添加一个name属性 var defaultMixin = { getDefaul ...
- React 高阶组件浅析
高阶组件的这种写法的诞生来自于社区的实践,目的是解决一些交叉问题(Cross-Cutting Concerns).而最早时候 React 官方给出的解决方案是使用 mixin .而 React 也在官 ...
随机推荐
- Express + Mongoose 极简入门
今天尝试使用express + mongoose,构建了一个简单的Hello world,实现以下功能: 定义mongodb使用的Schema,一个User 访问/输出Hello world 访问/i ...
- Zookeeper入门(五)之Linux环境下Zookeeper安装
本文参考地址为:http://www.mamicode.com/info-detail-2243059.html1.安装wget http://archive.apache.org/dist/zook ...
- 2019新的开始,新的规划,庆祝CSDN访问量过千
刚刚看了下博客访问量六千八百七十多个,然后我就自己刷新了一下,留个截图做纪念吧. 每一年都会有很多计划,然而到了年末却发现,未完成的还剩一大半,而完成的却屈指可数. 不过该立的flag还是要立的,顺便 ...
- 【学习】linux环境下nginx文件彻底删除
nginx卸载其实很简单,只需要两步即可完成!第一步:输入以下指令全局查找nginx相关的文件: sudo find / -name nginx* 第二步:删除查找出来的所有nginx相关文件 sud ...
- Java_IO流实验
实验题目链接:Java第09次实验(IO流) 0. 字节流与二进制文件 我的代码 package experiment.io; import java.io.DataInputStream; impo ...
- IDEA 创建maven jar、war、 pom项目
创建java jar.pom项目时创建maven-archetype-quickstart 创建java war项目时创建maven-archetype-webapp
- 三种CSS样式
内联式css样式,直接写在现有的HTML标签中 CSS样式可以写在哪些地方呢?从CSS 样式代码插入的形式来看基本可以分为以下3种:内联式.嵌入式和外部式三种. 内联式css样式表就是把css代码直接 ...
- 万变的Web,不变的CRUD
用JSP+Servlet写程序,到Struts,Spring,hibernate写程序,到现在Spring Cloud分布式写程序,到底有多大区别,是不是还在写CRUD? 看着JD上各种要求,简直是S ...
- C++模板函数实践1
实践如下: #include <iostream> #include <typeinfo> using namespace std; class Bean{ private: ...
- IDEA创建各种不同的工程的方法
javaWeb工程 maven创建javaSE项目 上面点击next: 项目右下角选择自动导入: maven创建javaWeb工程 项目右下角选择自动导入maven项目 上面创建成功之后发现没有jav ...