一、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()">+&nbsp;新增章节</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动态创建组件方法的更多相关文章

  1. vue 动态创建组件(运行时创建组件)

    function mountCmp (cmp, props, parent) { if (cmp.default) { cmp = cmp.default } cmp = Vue.extend(cmp ...

  2. Angular动态创建组件之Portals

    这篇文章主要介绍使用Angular api 和 CDK Portals两种方式实现动态创建组件,另外还会讲一些跟它相关的知识点,如:Angular多级依赖注入.ViewContainerRef,Por ...

  3. angular4 动态创建组件 vs 动态创建模板

    实现  模拟场景:页面上"帮助"按钮的点击触发帮助文档的弹出框,且每个页面的帮助文档不一样 因此弹出框里的帮助文档是一个动态模板而不是动态组件 以下comp均代表Type类型的动态 ...

  4. 动态创建组件TEdit

    //动态创建组件TEdit procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftSt ...

  5. Delphi动态创建组件,并释放内存

    开发所用delphi版本是xe2,效果图如下: 代码如下: ---------------------------------------------------------------------- ...

  6. Vue之创建组件之配置路由!

    Vue之创建组件之配置路由!== 第一步: 当然就是在我们的试图文件夹[views]新建一个文件夹比如home 在home文件夹下面新建一个文件index.vue 第二步:在router目录下做如下事 ...

  7. vue.js 创建组件 子父通信 父子通信 非父子通信

    1.创建组件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  8. Delphi 动态创建组件,单个创建、单个销毁

    效果图如下: 实现部分代码如下: var rec: Integer = 0; //记录增行按钮点击次数 implementation {$R *.dfm} //动态释放单个组件内存,即销毁组件 pro ...

  9. OAF 动态创建组件以及动态绑定属性

    在开发中,我们遇到以下一个需求. 一个表格左侧有5列是固定存在的,右侧有N列是动态生成的,并且该N列中第一列可输入,第二列是不可编辑的,但是是数字,如果小于0,那么就要显示为红色,重点标识出来. 首先 ...

随机推荐

  1. 设计模式(一)单例模式:创建模式 ASPNET CORE WEB 应用程序的启动 当项目中 没有STARTUP.CS 类如何设置启动 配置等等

    设计模式(一)单例模式:创建模式 先聊一下关于设计的几个原则(1)单一原则(SRP):一个类应该仅有一个引起它变化的原因 :意思就是 (一个类,最好只负责一件事情,并且只有一个引起它变化的原因(2)开 ...

  2. python-pexpect_01安装

    一:python2.7.12安装   #获取python2.7.12 wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz   ...

  3. 【转】Android的WebView控件载入网页显示速度慢的究极解决方案

    秒(甚至更多)时间才会显示出来.研究了很久,搜遍了国外很多网站,也看过PhoneGap的代码,一直无解. 一般人堆WebView的加速,都是建议先用webView.getSettings().setB ...

  4. TS流解析 四

    一 从TS流开始 数字电视机顶盒接收到的是一段段的码流,我们称之为TS(Transport Stream,传输流),每个TS流都携带一些信息,如Video.Audio以及我们需要学习的PAT.PMT等 ...

  5. openstack Aio env deubg

  6. Map类型介绍与遍历

    声明:本文非原创: 在程序员开发过程中,Map有着利用率占比是非常高:很多时间我们只知其用,不知其理:写这个随笔的目的也是希望对伙伴们对Map的理解有一点帮助. 类型介绍 java自带各种Map类.统 ...

  7. SQL Server 数据字典生成脚本

    SELECT sysobjects.name AS 表名称 ,--sysproperties.[value] AS 表说明 ,syscolumns.name AS 字段名称 ,--properties ...

  8. Django - CBV装饰器实现用户登录验证

    一.使用Django自带的decorator 通常情况,使用 函数定义的view,可以直接使用 login_required 直接装饰 @login_required def index(reques ...

  9. 学学cookie和session

    什么是Cookie? HTTP Cookie(也叫 Web Cookie或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器发起请求时被携带并发送到服 ...

  10. codevs1369 xth 砍树(线段树)

    1369 xth 砍树  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description 在一个凉爽的夏夜,xth 和 rabbi ...