当前位置: 首页 > news >正文

vue3(七)-基础入门之事件总线与动态组件

一、事件总线

  • 事件总线使用场景: 两个兄弟组件之间的传参,或者两个没有关联的组件之间的传参

html :引入 publicmsgacceptmsg 自定义组件 (自定义组件名称必须小写)

<body><div id="app"><publicmsg></publicmsg><acceptmsg></acceptmsg></div><script src="https://unpkg.com/vue@3/dist/vue.global.js"></script><script type="module" src="./js/templates.js"></script><script src="https://unpkg.com/mitt/dist/mitt.umd.js"></script></body>

js: 通过 emit(‘事件名称’,‘传递的参数’) 发布事件 ,on(‘事件名称’,回调函数) 监控事件

<script>
const emitter = window.mitt()
const app = Vue.createApp({})
app.component('publicmsg', {template:'<div><input type="text" ref="publicMessage"/><button @click="publicMsg()">发布</button></div>',methods: {publicMsg () {emitter.emit('messages', this.$refs.publicMessage.value)}}}).component('acceptmsg', {data () {return { acceptMesage: '' }},template: '<div><p>接收:{{acceptMesage}}</p></div>',mounted () {emitter.on('messages', msg => {this.acceptMesage = msg})}}).mount('#app')
</script>

二、动态组件

通过 component 标签 及 :is 属性动态选择显示的组件,keep-alive 标签可以使得组件在切换时,原组件被隐藏而不是被删除

html :

<body><script src="https://unpkg.com/vue@3/dist/vue.global.js"></script><script type="module" src="./js/11.动态组件.js"></script><div id="app"><keep-alive><component :is="chooseValue"></component></keep-alive><select v-model="chooseValue"><option value="component1">组件1</option><option value="component2">组件2</option><option value="component3">组件3</option></select></div>
</body>

js :

<script>
const app = Vue.createApp({data () {return { chooseValue: 'component1' }},components: {component1: {template: '<div><button>组件1</button><input type="text"/></div>'},component2: {template: '<div><button>组件2</button><input type="text"/></div>'},component3: {template: '<div><button>组件3</button><input type="text"/></div>'}}
}).mount('#app')</script>

结果演示:

A:当前为组件1: 输入文字后

在这里插入图片描述
-------------------------------------------------------------------------------------------

B:切换到组件2:

在这里插入图片描述
-------------------------------------------------------------------------------------------

C:切回组件1: 组件1输入的文字没有消失

在这里插入图片描述

http://www.lryc.cn/news/266561.html

相关文章:

  • 【计算机网络】网络层——IP协议
  • 《钢结构设计标准》中抗震性能化设计的概念
  • 【算法】【动规】回文串系列问题
  • 4-Docker命令之docker logs
  • svelte基础语法学习
  • Node.js教程-mysql模块
  • 网络通信协议
  • Spark集群部署与架构
  • DshanMCU-R128s2 SDK 架构与目录结构
  • 【5G PHY】NR参考信号功率和小区总传输功率的计算
  • k8s学习 — 各知识点快捷入口
  • 【Python】Python 批量转换PDF到Excel
  • Python并行计算和分布式任务全面指南
  • 微信小程序promise封装
  • hash长度扩展攻击
  • 设计模式--命令模式
  • 单例模式的七种写法
  • ElasticSearch入门介绍和实战
  • 【FPGA】分享一些FPGA视频图像处理相关的书籍
  • AUTOSAR从入门到精通-车载以太网(四)
  • MySQL报错:1054 - Unknown column ‘xx‘ in ‘field list的解决方法
  • 【Android 13】使用Android Studio调试系统应用之Settings移植(四):40+个依赖子模块之ActionBarShadow
  • nosql-redis整合测试
  • 智能化中的控制与自动化中的控制不同
  • java练习题之多态练习
  • [原创][R语言]股票分析实战[4]:周级别涨幅趋势的相关性
  • esp32使用lvgl,给图片取模显示图片
  • R语言使用scitb包10分钟快速绘制论文基线表
  • 类和对象
  • Py之tensorflow-addons:tensorflow-addons的简介、安装、使用方法之详细攻略