Vue动态创建组件方法
一、Vue的动态引入组件;
有的时候不知道引入什么组件,要根据数据的类型来引入不同的组件,这个时候就需要动态组件
动态组件
1、用法 :is = 'component-name'
2、用途 需要根据数据,动态渲染的场景。即组件类型不明确
父组件
- <component :is="nextTiceName" />"
:is 后边是组件名,是一个变量,本例子中变量为 nextTiceName,然后 nextTiceName 返回了 组件名,变量可以函数返回或者根据数据处理返回;
数据中
- import NextTick from '@/components/nextTice'
- export default {
- components: {
- NextTick
- },
- data() {
- nextTiceName: 'NextTick'
- }
- }
二、异步组件
有的时候一个组件特别大,而且不是初始化的时候才需要,特定时候才需要这时候就要异步加载
1、import 函数
2、按需加载,异步加载大组件
父组件
- <FormDemo v-if="formDate" />
在这里 formDate 控制这个组件是否显示,例如特定点击才显示此组件;正常我们是 import 引入函数,但是这里就不通过 import 了,直接在 components 里面注册
- export default {
- components: {
- FormDemo: () => import('../components/formDemo')
- }
- }
三、组件缓存 keep-alive
1、频繁切换,不需要重复渲染
2、这是Vue的一个性能优化地方
例如:tab页,tab1 tab2 tab3,tab2显示的话tab1就会destory,tab3显示tab2就会destory,这个时候来回切换影响内存,就要用到keep-alive
四、组件混合 mixin
1、多个组件有相同的逻辑。抽离出来
2、mixin 并不完美,会有一些问题 vue3的composition Api旨在解决这些问题
写法:例如新建一个 mixin.js文件
- export default {
- // 多个组件公用的逻辑,数据处理,方法都可以写在这里面
- data() {
- return {
- name: '城市'
- }
- },
- methods: {
- showName() {}
- },
- mounted(){}
- }
父组件中引入:
- import myMixin from './mixin'
- export default {
- mixins: [myMixin], // 可以添加多个
- data() {
- return {}
- }
- }
这样将多个组件复用的逻辑都写在mixin里面,那里要哪里引入就行;和类似写一个公用js文件是一个原理
- mixin问题
- 、变量来源不明确,不利于阅读
- 、多命名mixin 可能会造成命名冲突
五、动态创建组件的例子
组件写好之后有的时候需要动态创建组件。例如:
编辑文章页面,正文是一个富文本编辑器,富文本编辑器是一个第三方的组件,点击添加章节的时候需要动态的创建一个富文本编辑器这个时候怎么处理呢。
富文本编辑器也就是第三方的组件,需要绑定一个值就跟input一样,但是其他的和平常都是一样的,根据这个特点我们就可以使用Vue的for循环去动态创建例如
- <div>
- <quill-editor
- v-model="item.content"
- style="min-height: 150px;background: #fff;"
- v-for="item in items"
- class="editer">
- </quill-editor>
- </div>
- <div class="addClass_box">
- <span @click="addTravel()">+ 新增章节</span>
- </div>
- quill-editor 这个是个组件,直接循环出来就行,至于组件所绑定的值,循环出来绑定进去就行。
- import { quillEditor } from 'vue-quill-editor'
- export default {
- components: {
- quillEditor
- },
- data () {
- return {
- items: [{
- component: quillEditor,
- content: ''
- }]
- }
- },
- methods: {
- addTravel(){
- this.items.push({
- component: quillEditor,
- content: ''
- })
- }
- }
- }
点击添加的时候把items这个数组扩张就行了。
Vue动态创建组件方法的更多相关文章
- vue 动态创建组件(运行时创建组件)
function mountCmp (cmp, props, parent) { if (cmp.default) { cmp = cmp.default } cmp = Vue.extend(cmp ...
- Angular动态创建组件之Portals
这篇文章主要介绍使用Angular api 和 CDK Portals两种方式实现动态创建组件,另外还会讲一些跟它相关的知识点,如:Angular多级依赖注入.ViewContainerRef,Por ...
- angular4 动态创建组件 vs 动态创建模板
实现 模拟场景:页面上"帮助"按钮的点击触发帮助文档的弹出框,且每个页面的帮助文档不一样 因此弹出框里的帮助文档是一个动态模板而不是动态组件 以下comp均代表Type类型的动态 ...
- 动态创建组件TEdit
//动态创建组件TEdit procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftSt ...
- Delphi动态创建组件,并释放内存
开发所用delphi版本是xe2,效果图如下: 代码如下: ---------------------------------------------------------------------- ...
- Vue之创建组件之配置路由!
Vue之创建组件之配置路由!== 第一步: 当然就是在我们的试图文件夹[views]新建一个文件夹比如home 在home文件夹下面新建一个文件index.vue 第二步:在router目录下做如下事 ...
- vue.js 创建组件 子父通信 父子通信 非父子通信
1.创建组件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- Delphi 动态创建组件,单个创建、单个销毁
效果图如下: 实现部分代码如下: var rec: Integer = 0; //记录增行按钮点击次数 implementation {$R *.dfm} //动态释放单个组件内存,即销毁组件 pro ...
- OAF 动态创建组件以及动态绑定属性
在开发中,我们遇到以下一个需求. 一个表格左侧有5列是固定存在的,右侧有N列是动态生成的,并且该N列中第一列可输入,第二列是不可编辑的,但是是数字,如果小于0,那么就要显示为红色,重点标识出来. 首先 ...
随机推荐
- 【解决】hive与hbase表结合级联查询的问题
[Author]: kwu [解决]hive与hbase表结合级联查询的问题.hive两个表以上,关联查询时出现长时无法返回的情况. 同一时候也不出现,mr的进度百分比. 查询日志如图所看到的: 解决 ...
- OCX 打包 CAB 与 JS 调用具体教程
近期在做一个 WEB 项目.须要调用 OCX 进行连接读卡器读卡.本来并不想用 OCX 技术.由于 ActiveX 技术是微软出品.这样就导致整个系统仅仅能使用 IE 浏览器(其它浏览器能够通 ...
- sizeof小览
一.文章来由-一道面试题迁出的探究 我发现我已经形成一种习惯写来由了,以后看博客的时候能够让我回顾起为什么出现这个问题,我用什么方法解决的,既然形成习惯就让这个习惯保持下去吧.今天实验室师姐在看书,一 ...
- ADT 压缩包 R23.0.0
http://pan.baidu.com/s/1qWLjs2w
- 第十四章 netlink机制--基于Linux3.10【转】
本文转载自:http://blog.csdn.net/shichaog/article/details/44682613 Netlink基于网络的消息机制,能够让用户和内核空间进行通信,12.3节提到 ...
- ssh连接超时问题解决方案,每一种方案都可以
1.服务端修改 vim /etc/ssh/sshd_config 修改 ClientAliveInterval 60 ClientAliveCountMax 40 60秒,向客户端发送一次请求. 超过 ...
- js 得到 radiobuttonlist和CheckBoxList 选中值
js 得到 radiobuttonlist和CheckBoxList 选中值 得到radiobuttonlist 选中值:var CheckBoxList=document.all.optButton ...
- hdu 4123(树形dp+倍增)
Bob’s Race Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 简单动态规划——最长公共子序列&&最长回文子序列&&最长上升||下降子序列
最长公共子序列,顾名思义当然是求两个字符串的最长公共子序列啦,当然,这只是一道非常菜的动规,所以直接附上代码: #include<iostream> #include<cstdio& ...
- bzoj1951 [Sdoi2010]古代猪文 ——数论综合
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1951 题意就是要求 G^( ∑(k|n) C(n,k) ) % p,用费马小定理处理指数,卢 ...