当前位置: 首页 > 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>

 

http://www.xdnf.cn/news/634213.html

相关文章:

  • Lua 脚本在 Redis 中的运用-23(Lua 脚本语法教程)
  • 计算机视觉中的可重复性:深入案例分析与Python代码实现
  • 【MySQL成神之路】MySQL函数总结
  • 【寻找Linux的奥秘】第八章:进程控制
  • 我的第1个爬虫程序——豆瓣Top250爬虫的详细步骤指南
  • 云原生安全:网络协议TCP详解
  • GO 语言进阶之 时间处理和Json 处理
  • 2025.05.23 Axure 动态面板学习笔记
  • Python经典算法实战
  • 股票程序化交易-使用python获取新浪财经期货行情数据
  • 历年吉林大学保研上机真题
  • 历年复旦大学保研上机真题
  • React整合【ECharts】教程003:关系图的构建和基本设置
  • 项目难点 与 缓存
  • 制作一枚可随身携带的Linux服务器虚拟机
  • Linux核心技术:Linux文件系统与bootFS/rootFS
  • 高级特性实战:死信队列、延迟队列与优先级队列(二)
  • 6个月Python学习计划 Day 4
  • MySQL#秘籍#一条SQL语句执行时间以及资源分析
  • 机器学习-模型选择与调优
  • 【慧游鲁博】【8】前后端用户信息管理:用户基本信息在小程序端的持久化与随时获取
  • vue2项目搭建
  • Maven与Spring核心技术解析:构建管理、依赖注入与应用实践
  • 私有知识库 Coco AI 实战(七):摄入本地 PDF 文件
  • Spring Cloud Alibaba Sentinel安装+流控+熔断+热点+授权+规则持久化
  • Linux系统编程-DAY04
  • 网络编程与axios技术
  • 在飞牛nas系统上部署gitlab
  • aws(学习笔记第四十二课) serverless-backend
  • 人工智能数学基础实验(二):奇异值分解(SVD)-图像处理