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

uni-app学习笔记十四-vue3中emit的使用

在组件传值中,无论是props还是slot都是单向数据流,父组件向子组件传值,子组件不能直接对父组件传过来的值进行重新赋值。

下面学习子组件向父组件传值的工具--emit。

在子组件emit设置传递的函数名和值

<template><view>子组件<button @click="$emit('add',Math.random())">提交</button></view>
</template>

子组件设置传递过去的函数名为add,值为一个随机数

在父组件中接收:

通过@add="onAdd",其中add就是子组件的函数名

<template><view><xxm-child @add="onAdd"></xxm-child><view class="box" :style="{background:color}">{{num}}</view></view>
</template><script setup>import {ref} from "vue"const num = ref(0)const color = ref("#ccc")const onAdd =function onAdd(e){console.log(e)num.value=ecolor.value="#"+String(e).substring(3,6)}
</script><style lang="scss" scoped>.box{width: 100%;height: 50px;}     
</style>

在父组件中,onAdd接收子组件传递过来的随机数并转化为字符串进行截取,得到一个颜色的随机数。效果如下:

当点击提交按钮时,随机数发生变化,颜色也随之改变。

在实际开发中,emit通常需要在JS部分进行处理,上面的

@click="$emit('add',Math.random())"

在JS部分需要这样写

<template><view>子组件<button @click="onClick">提交</button></view>
</template><script setup>const emit = defineEmits(["add"])function onClick(){emit('add',Math.random())}
</script>

 可以实现一样的效果。

如果子组件中涉及多个 ,可参照下面的方式进行处理:

子组件

<template><view>子组件<button @click="onClick">提交</button></view><view>------------</view><view><input type="text" @input="onInput" /></view>
</template><script setup>const emit = defineEmits(["add","change"])function onClick(){emit('add',Math.random())}function onInput(e){console.log(e.detail.value)emit("change",e.detail.value)}
</scipt>

父组件

<template><view><xxm-child @add="onAdd" @change="onChange"></xxm-child><view class="box" :style="{background:color,fontSize:size+'px'}">num:{{num}} </view></view>
</template><script setup>import {ref} from "vue"const num = ref(0)const size = ref(12)const color = ref("#ccc")const onAdd =function onAdd(e){console.log(e)num.value=ecolor.value="#"+String(e).substring(3,6)}function onChange(e){console.log(e)size.value=e}
</script>

 

相关文章:

  • rabbitmq的使用介绍
  • 【TDengine源码阅读】举例说明pthread_once_t和PTHREAD_ONCE_INIT
  • PPT连同备注页(演讲者模式)一块转为PDF
  • 深入浅出IIC协议 - 从总线原理到FPGA实战开发 -- 第六篇:AXI4-Lite桥接设计
  • 鸿蒙仓颉开发语言实战教程:页面跳转和传参
  • Java多线程JUC
  • 2025.05.23 Axure 动态面板学习笔记
  • Linux 的编辑器--vim
  • Apache 高级配置实战:从连接保持到日志分析的完整指南
  • 对WireShark 中的UDP抓包数据进行解析
  • Php JIT 使用详解
  • 从智能提效到产品赋能的架构实践
  • 【HW系列】—web常规漏洞(SQL注入与XSS)
  • RocketMQ 5.0 核心概念与架构解析
  • python | vscode | 使用uv快速创建虚拟环境(实现一个项目一个虚拟环境,方便环境管理)
  • 【排序算法】典型排序算法和python 实现
  • 前端流行框架Vue3教程:28. Vue应用
  • 【排序算法】典型排序算法 Java实现
  • 基于opencv的全景图像拼接
  • CSS传统布局与定位详解与TDK三大标签SEO优化
  • 泉州做网站设计公司/灰色行业seo
  • 企业网站怎么做的/关键词优化靠谱推荐
  • 要想浏览国外网站 应该怎么做/武汉网络推广网络营销
  • 平湖网站设计/百度文章收录查询
  • 福州企业做网站/seogw
  • 做本地网站应该选什么内容/数据网站有哪些