1. 概述

暗示效应告诉我们:

巧妙的暗示会在不知不觉中剥夺我们的判断力,对我们的思维形成一定的影响,造成我们行为的些许改变或者偏差。

例如你的朋友说你脸色不太好,是不是病了,此时,你可能就会感觉浑身不舒服、头重脚轻,想赶紧去看医生。

而如果你的朋友对你说你脸色不太好,应该是没睡好,属于正常现象,一会中午吃点好的,再睡个午觉就没事了,你可能就会感觉只是小事情,不会去在意。

积极的暗示,是有利于身心健康的,因此我们要时刻保持正能量,多对自己做积极的暗示。

言归正传,今天我们来聊聊 VUE 的动态组件。

2. 动态组件

2.1 一个简单的提交例子

<body>
<div id="myDiv"></div>
</body>
<script>
const app = Vue.createApp({ template:`
<my-input />
<my-div />
<button>提交</button>
`
});
app.component("my-input", { template: `
<input />
`
});
app.component("my-div", { template: `
<div>
提交成功
</div>
`
});
const vm = app.mount("#myDiv");

这是一个简单的提交例子,需要实现的效果是:“提交成功”几个字先隐藏,我们在文本框中填写内容,点击提交按钮,文本框隐藏,显示“提交成功”几个字,按钮由【提交】变为【重新编辑】

当点击【重新编辑】时,文本框显示,“提交成功”几个字隐藏,按钮由【重新编辑】变为【提交】

2.2 使用 v-show 实现

咱们先使用之前学的 v-show 的语法实现上面的需求

    const app = Vue.createApp({
data() {
return {
showCom : "my-input",
buttonName : "提交"
}
},
methods : {
changeInputStatus() {
if(this.showCom === 'my-input') {
this.showCom = "my-div";
this.buttonName = "重新编辑";
} else {
this.showCom = "my-input";
this.buttonName = "提交";
}
}
},
template:`
<my-input v-show="showCom === 'my-input'" />
<my-div v-show="showCom === 'my-div'" />
<button @click="changeInputStatus">{{buttonName}}</button>
`
}); app.component("my-input", { template: `
<div>
<input />
</div>
`
}); app.component("my-div", { template: `
<div>
提交成功
</div>
`
});

很明显,用 v-show 的语法是可以实现的,我们只需修改 data 中的 showCom 的值,就能实现组件的隐藏和显示

2.3 使用动态组件实现

   const app = Vue.createApp({
data() {
return {
showCom : "my-input",
buttonName : "提交"
}
},
methods : {
changeInputStatus() {
if(this.showCom === 'my-input') {
this.showCom = "my-div";
this.buttonName = "重新编辑";
} else {
this.showCom = "my-input";
this.buttonName = "提交";
}
}
},
template:`
<component :is="showCom" />
<button @click="changeInputStatus">{{buttonName}}</button>
`
});

使用 <component :is="showCom" />  动态组件标签,将组件与数据 showCom 绑定,showCom 的值,必须是组件的名字,名字是哪个组件,component 就转变成哪个组件

但似乎有点问题,点击【重新编辑】重新显示文本框后,文本框中输入的内容不见了,我们希望文本框中的内容还在

2.4 使用动态组件实现,保留文本框内容

    const app = Vue.createApp({
data() {
return {
showCom : "my-input",
buttonName : "提交"
}
},
methods : {
changeInputStatus() {
if(this.showCom === 'my-input') {
this.showCom = "my-div";
this.buttonName = "重新编辑";
} else {
this.showCom = "my-input";
this.buttonName = "提交";
}
}
},
template:`
<keep-alive>
<component :is="showCom" />
</keep-alive>
<button @click="changeInputStatus">{{buttonName}}</button>
`
});

在 component 标签外面包裹一层 keep-alive 标签,文本框的内容就可以保留了

3. 综述

今天聊了一下 VUE3 的 动态组件的使用,希望可以对大家的工作有所帮助,下一节我们继续讲组件的相关知识,敬请期待

欢迎帮忙点赞、评论、转发、加关注 :)

关注追风人聊Java,每天更新Java干货。

4. 个人公众号

追风人聊Java,欢迎大家关注

VUE3 之 动态组件 - 这个系列的教程通俗易懂,适合新手的更多相关文章

  1. VUE3 之 作用域插槽 - 这个系列的教程通俗易懂,适合新手

    1. 概述 破窗效应告诉我们: 当一个建筑物窗户的玻璃完好无损时,很少有人想去破坏它,当有一个人破坏了一块窗户的玻璃,其他窗户的玻璃也很快会被人破坏. 同理,一个很干净的地方,人们不好意思去丢垃圾,但 ...

  2. VUE3 之 列表动画 - 这个系列的教程通俗易懂,适合新手

    1. 概述 老话说的好:可以为别人解决痛点的产品就是好产品. 言归正传,今天我们来聊聊 VUE 的列表动画. 2. 列表动画 2.1  列表中增加和删除元素 <style> .my-ite ...

  3. VUE3 之 状态动画 - 这个系列的教程通俗易懂,适合新手

    1. 概述 老话说的好:不用羡慕别人,每个人都有属于自己的人生道路,重要的是在前进道路上遇见阻碍时,如何去积极的面对并解决. 言归正传,今天我们来聊聊 VUE 的状态动画. 2. 状态动画 2.1 数 ...

  4. VUE3 之 多个 v-model 绑定及 v-model 修饰符的使用 - 这个系列的教程通俗易懂,适合新手

    1. 概述 洛克定律告诉我们: 当我们的目标很远大,远到我们都看不到终点时,放弃几率就会很大,就像跑马拉松比赛,由于时间长.距离长,很多选手都会选择在中途放弃. 其实有个好办法,就是拆分,把大目标拆分 ...

  5. VUE3 之 插槽的使用 - 这个系列的教程通俗易懂,适合新手

    1. 概述 非理性定律告诉我们: 人们总是习惯于以情感去判断眼前的事物,非理性的去做决定. 对于长远的利益,人们更愿意去选择短期的利益. 因此在做决定前要让自己冷静,理性的分析,让自己看的更远. 言归 ...

  6. VUE3 之 ref、provide、inject 的使用 - 这个系列的教程通俗易懂,适合新手

    1. 概述 首因效应告诉我们: 在日常交往中,第一印象是非常重要的,好的第一印象能让我们在与人相处时事半功倍. 但也从另一面告诉我们,不能仅凭第一印象去判断一个人,有时虚假的第一印象,也有可能蒙蔽我们 ...

  7. VUE3 之 使用 Mixin 实现代码的复用 - 这个系列的教程通俗易懂,适合新手

    1. 概述 老话说的好:舍得舍得,先舍才能后得. 言归正传,今天我们来聊聊 VUE 中使用 Mixin 实现代码的复用. 2. Mixin 的使用 2.1 不使用 Mixin 的写法 <body ...

  8. VUE3 之 全局 Mixin 与 自定义属性合并策略 - 这个系列的教程通俗易懂,适合新手

    1. 概述 老话说的好:心态决定命运,好心态才能有好的命运. 言归正传,今天我们来聊聊 VUE 中的全局 Mixin 与 自定义属性合并策略. 2. Mixin 的使用 2.1 全局 Mixin 之前 ...

  9. VUE3 之 动画与过渡的实现 - 这个系列的教程通俗易懂,适合新手

    1. 概述 光环效应告诉我们: 当一个人在某一方面取得了巨大的成功,人们就会给他贴上正面的标签,这个人从此就被"优秀"的光环所笼罩,他做的一切,人们都认为是正确的. 例如:越是名气 ...

随机推荐

  1. js 简单版发布留言 案例

    <!DOCTYPE html>   <html lang="en">   <head>       <meta charset=" ...

  2. mybatis学习笔记(四)

    resultType 语句返回值类型的完整类名或别名 resultType 返回的是一个map集合,key是列名,value是对应的值 使用resultMap实现联表查询 resultMap 查询的结 ...

  3. 使用springboot devtools工具实现热部署

    一.在maven父工程pom文件中添加依赖 二.在子工程中添加依赖 三.在IDEA中勾选 Build project automatically项 四. Shift+Ctrl+Alt+/,选择Regi ...

  4. Linux的六种查找命令

    http://www.ruanyifeng.com/blog/2009/10/5_ways_to_search_for_files_using_the_terminal.html 1. find fi ...

  5. zabbix监控图形中文乱码的解决方法

    问题描述: 最近搭建了一套zabbix,当我把语言切换到中文的时候,发现监控的图形界面中一些中文参数乱码,但是图形界面在英文环境下完全没有乱码问题.如下图(中文界面): 解决方法: 解决方法有两种,方 ...

  6. 图形验证插件,百度编辑器拓展功能,NodeJs消息机制以及聊天室

    图形验证插件 网上找了很多图形验证插件,比较推荐verify.js <link rel="stylesheet" type="text/css" href ...

  7. markdown mermaid流程图

    流程图 所有流程图都由节点.几何图像.箭头或线条组成. mermaid代码定义了这些节点和边的制作和交互方式.可以有不同的箭头类型.多向箭头以及与子图的连接. 节点 节点 flowchart LR i ...

  8. js中数字和字母互转的方法

    var letter = String.fromCharCode(66); // B var num = "B".charCodeAt(); // 66

  9. Android官方文档翻译 十四 3.2Supporting Different Screens

    Supporting Different Screens 支持不同的屏幕 This lesson teaches you to 这节课教给你 Create Different Layouts 创建不同 ...

  10. TexStudio中Bibtex使用

    TexStudio中Bibtex使用 1.首先在百度文库中找到相应的参考文献: 2.建立bibfile.bib文件,放在和.tex同一目录下,将上面页面的结果考入该文件,注意其中第一行中的Tuan20 ...