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

做百度收录的网站学生个人网页制作

做百度收录的网站,学生个人网页制作,网站建设 长摊 无形资产,局门户网站建设工作汇报【Vue3】组件通信之自定义事件 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋…

【Vue3】组件通信之自定义事件

  • 背景
  • 简介
  • 开发环境
  • 开发步骤及源码
  • 总结

背景

随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本文内容并非完全原创,大多是参考其他文章资料整理所得,感谢每位技术人的开源精神。

简介

本文介绍 Vue3 中如何通过自定义事件实现子组件向父组件传数据。

Vue3 中组件间通信包括:

  • 父组件向子组件传数据,实现方案有:
    • props
    • v-model
    • $refs
    • 默认插槽 / 具名插槽
  • 子组件向父组件传数据
    • props
    • v-model
    • $parent
    • 自定义事件
    • 作用域插槽
  • 父组件向子组件的子组件传数据,即向孙子组件传数据
    • $attrs
    • provider & inject
  • 任意组件间传数据
    • mitt
    • Pinia

开发环境

分类名称版本
操作系统WindowsWindows 11
IDEVisual Studio Code1.91.1

开发步骤及源码

1> 在 【Vue3】组件通信之props 基础上修改 Vue 根组件 src/App.vue,在子组件标签上添加一个自定义事件 sync-read-times

<template><div class="parent"><h1>父组件</h1><h2>Blog数量:{{ blogs.length }}</h2><h2>浏览数量:{{ readTimes }}</h2><!-- 给子组件绑定了一个 sync-read-times 事件,只要 sync-read-times 被触发,其指向的 syncReadTimes 函数就会被调用 --><Blog :blogs="blogs" :author="author" @sync-read-times="syncReadTimes" /></div>
</template><script setup lang="ts">
import Blog from './components/Blog.vue'
import { reactive, ref } from 'vue'const author = ref('Nick')const blogs = reactive([{ id: '001', title: '美国大选', content: '美国大选将于...' },{ id: '002', title: '奥运奖牌', content: '截止今日奥运奖牌榜...' },{ id: '003', title: '俄乌战争', content: '乌克兰单方面提出希望和谈...' },{ id: '004', title: '巴以冲突', content: '巴以冲突最新战况...' },
])const readTimes = ref(0)function syncReadTimes(value) {readTimes.value += value
}
</script><style scoped lang="scss">
.parent {background-color: orange;padding: 20px;
}
</style>

2> 修改子组件,使用 defineEmits 函数声明接收的父组件自定义事件 sync-read-times,然后修改 <button> 点击事件为触发自定义事件 sync-read-times

<template><div class="content"><h1>子组件</h1><div class="blog" v-for="blog in blogs" :key="blog.id"><div class="blog-title">标题:{{ blog.title }}</div><div class="blog-author">作者:{{ author }}</div><div class="blog-content">{{ blog.content }}</div><button @click="emits('sync-read-times', 1)">浏览量+1</button></div></div>
</template><script setup lang="ts">
const data = defineProps(['author', 'blogs'])
// 声明事件
const emits= defineEmits(['sync-read-times'])
</script><style scoped lang="scss">
.content {background-color: aquamarine;padding: 20px;.blog {border: 1px solid gray;border-radius: 5px;padding: 0 10px;margin-top: 5px;div {padding: 10px 5px;}.blog-title {font-weight: bold;}.blog-author {font-size: small;font-style: italic;}.blog-content {font-size: small;}button {margin: 10px 0;}}
}
</style>

3> 执行命令 npm run dev 启动应用,浏览器访问:http://localhost:5173/。点击子组件中按钮,父组件中的 浏览数量 随按钮点击次数增加。
在这里插入图片描述

总结

使用自定义事件实现子组件向父组件传数据:

  1. 父组件需要在子组件标签上自定义事件,格式:@事件名="函数名",如本例中的 @sync-read-times="syncReadTimes",当子组件触发自定义事件 sync-read-times 时,父组件的函数 syncReadTimes 就会被调用;
  2. 子组件使用 defineEmits 声明接收的父组件自定义事件,defineEmits 函数参数为自定义事件名称数组;
  3. 子组件根据实际需求触发自定义事件,触发自定义事件函数(本例中的 emits('sync-read-times', 1))的第一个参数为自定义事件名,后面跟随自定义事件对应的父组件中函数的参数(参数数量不定),即向父组件传的数据。
http://www.khdw.cn/news/9461.html

相关文章:

  • 帮网贷做网站会判刑吗上海平台推广的公司
  • 淘宝不能开网站建设店铺吗推广信息发布平台
  • 代码库网站网站seo诊断报告
  • 重庆网站制单页面网站如何优化
  • 业务员销售管理软件优化网站快速排名软件
  • 最专业的佛山网站建设价格什么是网站优化
  • 招聘代做网站站长之家ip查询
  • 南昌网站设计系统移动排名提升软件
  • 网站做电子公章违法吗网站关键词优化外包
  • 网站项目建设计划不死鸟分享友情链接
  • 光谷 网站建设公司郑州网站seo公司
  • 一站式服务的优点代哥seo
  • wordpress站点进入时弹窗搜索引擎营销原理
  • 做企业网站所需要的资料ip营销的概念
  • 学网站建设的工资高吗湖南网站营销推广
  • 做地方网站赚钱吗百度网页版电脑版入口
  • 开发一个小程序游戏要多少钱陕西整站关键词自然排名优化
  • 出入合肥最新通知今天莱芜seo
  • 日本真人做爰无遮挡视频免费网站电子商务营销方法
  • 网站建设灯广告主资源哪里找
  • 如何在自己电脑上做网站服务器福州seo技术培训
  • 毕设做微课资源网站设计可以吗网站搜索优化官网
  • 中国上海网seo人才招聘
  • 百度导航地图下载seo北京
  • 网站视频下载方法seo网站运营
  • 找人做网站注意什么seo推广代理
  • 目录网站做外链网盟推广是什么意思
  • 网站模板文件的名字百度推广时间段在哪里设置
  • 免费做图素材网站有哪些营销型网站建设步骤
  • 沈阳市建设工程质量检测中心网站如何找外包的销售团队