初学vue3与ts:朕与太子的props、emit互动

父页面(index-props)

<!-- 父子组件互动 -->
<template><div class="flex"><div class="props-item"><div class="index-title">皇帝:</div><div class="flex a-c mt-20"><div class="title-item">{{oneTitle}}</div><button class="ml-20" @click="sendSign" v-if="oneStatus">传圣旨</button></div><div class="title-item" v-if="fourStatus">朕心甚安</div></div><div class="props-item"><indexEmit ref="indexEmitRef" @threeChange="threeChange" :son="son"></indexEmit></div></div>
</template><script lang="ts" setup>import { ref } from 'vue'import indexEmit from '../../components/index-emit.vue'const indexEmitRef = ref()const oneStr = ref('朕有一个任务要你去做')const oneList = oneStr.value.split('')const oneTitle = ref('')const oneTime = ref<any>(null)const oneIndex = ref(0)const oneStatus = ref(false)const son = '太子'// 定时器oneTime.value = setInterval(()=>{if(oneIndex.value >= oneList.length){clearInterval(oneTime.value)oneStatus.value = true}else{oneTitle.value += oneList[oneIndex.value]oneIndex.value++;}},100)const signList = ref([{title:'朕要吃面线糊,去打包一份过来'},{title:'给朕接着舞,接着乐'},{title:'传拜登觐见'},{title:'双11到了,去囤10万吨粮食'},{title:'朕命你打下倭国'},{title:'你登基吧,朕累了'},{title:'摆驾白宫'},{title:'原神,启动'},{title:'周四要到了,穿上西装去打团'},{title:'天王盖地虎'}])function sendSign(){oneStatus.value = falselet oneNum = Math.floor(Math.random() * 10);//触发子组件的事件indexEmitRef.value.acceptSign(signList.value[oneNum].title)}const fourStatus = ref(false)//子组件触发父组件的事件function threeChange(){fourStatus.value = true}
</script><style>.index-title{font-size: 24px;font-weight: bold;}.title{font-weight: bold;font-size: 20px;padding-top: 20px;padding-left: 20px;}.title-sub{padding-left: 40px;margin-top: 10px;}.flex{display: flex;}.pl-60{padding-left: 60px !important;}.props-item{min-width: 600px;padding-right: 30px;}.title-item{font-weight: bold;font-size: 20px;padding-left: 20px;}.mt-20{margin-top: 20px;}.ml-20{margin-left: 20px;}.a-c{align-items: center;}
</style>

子组件(index-emit)

<!-- 父子组件互动 -->
<template><div><div class="index-title">{{son}}:</div><div class="flex a-c mt-20" v-if="towStr"><div class="title-item">{{towStr}}</div><button v-if="towStatus" class="ml-20" @click="acceptNext">接圣旨</button></div><div v-if="threeStatus" class="title-item">儿臣接旨</div></div>
</template><script lang="ts" setup>// setup()模式的话,要改成setup(props,{emit})即可,不需要defineExpose、defineProps和defineEmitsimport { ref, reactive, onMounted } from 'vue'// props接收值 setup的用法,setup()不需要// props接收值 setup的用法,setup()不需要// props接收值 setup的用法,setup()不需要const props = defineProps({son:{type:String,default:''}})const towTime = ref<any>(null)const towIndex = ref(0);const towStatus = ref(false)const towStr = ref('')// 接收父组件传的值function acceptSign(sign:string){let towSign = ''if(sign == '天王盖地虎'){towSign = '小鸡炖蘑菇'}else{towSign = `奉天承运,皇帝诏曰:${sign}`}let towList = towSign.split('')towTime.value = setInterval(()=>{if(towIndex.value >= towList.length){clearInterval(towTime.value)towStatus.value = true}else{towStr.value += towList[towIndex.value]towIndex.value++;}},100)}const threeStatus = ref(false)//用emit需要的 setup的用法,setup()不需要//用emit需要的 setup的用法,setup()不需要//用emit需要的 setup的用法,setup()不需要const emit = defineEmits(['threeChange'])//发送emit事件function acceptNext(){towStatus.value = falsethreeStatus.value = truesetTimeout(()=>{emit('threeChange')},500)}//父组件要调用子组件的事件,必须暴露子组件的事件...重要的事说三遍,setup()不需要//父组件要调用子组件的事件,必须暴露子组件的事件...重要的事说三遍,setup()不需要//父组件要调用子组件的事件,必须暴露子组件的事件...重要的事说三遍,setup()不需要defineExpose({ acceptSign })
</script><style></style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/174022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在Node.js和Express中设置TypeScript(2023年)

如何在Node.js和Express中设置TypeScript&#xff08;2023年&#xff09; 在这篇文章中&#xff0c;我们将介绍在Express应用程序中设置TypeScript的最佳方法&#xff0c;了解与之相关的基本限制。 文章目录 如何在Node.js和Express中设置TypeScript&#xff08;2023年&#x…

中国城市数字经济发展对环境污染的影响及机理研究(2011-2021年)

参照张翱祥&#xff08;2022&#xff09;的做法&#xff0c;本团队对来自南方经济《中国城市数字经济发展对环境污染的影响及机理研究》一文中的基准回归部分进行复刻 参考赵涛&#xff08;2020&#xff09;计算&#xff0c;PM2.5根据Atmospheric Composition Analysis Group计…

案例033:基于微信小程序的商品展示系统设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

828. 统计子串中的唯一字符 --力扣 --JAVA

题目 我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符&#xff0c;并返回唯一字符的个数。 例如&#xff1a;s "LEETCODE" &#xff0c;则其中 "L", "T","C","O","D" 都是唯一字符&#xf…

巴菲特清仓Paytm,亏损62亿卢比

KlipC报道&#xff1a;伯克希尔哈萨韦清仓其在印度“支付宝”Paytm的股份。 KlipC的合伙人Andi D表示&#xff1a;“据公开资料显示&#xff0c;伯克希尔.哈萨韦于2018年斥3亿美元巨资收购Paytm2.6%的股份&#xff0c;沃伦巴菲特公司于2021年出售Paytm 价值3600万美元的股份&am…

ConcurrentHashMap底层原理以及它 为什么是线程安全的,底层具体实现

文章目录 ConcurrentHashMap 为什么是线程安全的&#xff1f;ConcurrentHashMap 底层具体实现知道吗&#xff1f;实现原理是什么&#xff1f;ConcurrentHashMap 的整体架构**ConcurrentHashMap 的基本功能**ConcurrentHashMap 在性能方面做的优化** 今天来和大家谈谈&#xff0…

卡码网语言基础课 | 14. 链表的基础操作Ⅱ

题目&#xff1a; 构建一个单向链表&#xff0c;链表中包含一组整数数据&#xff0c;输出链表中的第 m 个元素&#xff08;m 从 1 开始计数&#xff09;。 要求&#xff1a; 1. 使用自定义的链表数据结构 2. 提供一个 linkedList 类来管理链表&#xff0c;包含构建链表、输出…

【多属性对象“{a:1,b:2}”】与【单属性对象的数组“[{a:1},{b:2}]”】的相互转换

前端开发的某些场景&#xff08;比如用echarts开发某些可视化图表&#xff09;经常需要将【多属性对象&#xff0c;如“{a:1,b:2}”】与【单属性对象的数组&#xff0c;如“[{a:1},{b:2}]”】做相互转换&#xff0c;以下是不通过循环&#xff0c;简洁实现这种转换的方法&#x…

支持向量机的算法原理

支持向量机&#xff08;Support Vector Machine&#xff0c;简称SVM&#xff09;是机器学习领域中一种常用的分类算法&#xff0c;它基于统计学习理论和结构风险最小化原则&#xff0c;具有很强的理论基础和良好的分类性能。本文将详细介绍支持向量机的算法原理&#xff0c;并解…

【C语言】优化通讯录管理系统2

本篇博客是基于上一篇博客写出来的&#xff0c;了解上一篇博客 大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家再次优化上一篇的通讯录&#xff0c;实现将录入的数据在程序退出后存储到文件中&#xff0c;在下一次程序开始时打开文件获取数据&#xff0c;如果你觉得我写…

好用到难以置信的全域BI:揭秘店铺服务从优秀到卓越的3个办法

双11刚结束&#xff0c;一些平时易忽略的问题被放大出来&#xff0c;发现问题不可怕&#xff0c;可怕的是无视。如果您还没想好接下来怎么调整&#xff0c;本篇介绍的「全域BI-服务」定会给您一些思路。 过往&#xff0c;传统客服服务的管理仍停留于人工操作阶段&#xff0c;企…

冯·诺依曼体系结构和操作系统

目录 一、冯诺依曼体系结构 1、初见结构 2、对体系结构的理解 3、总结 二、操作系统 1、概念 2、作用 一、冯诺依曼体系结构 1、初见结构 数学家冯诺依曼提出了计算机制造的三个基本原则&#xff0c;即采用二进制逻辑、程序存储执行以及计算机由五个部分组成&#xff08…

在 Next 14 的 appRouter 模式中接入 React-Redux

在 Next 14 的 appRouter 模式中接入 React-Redux 说明 Next.js 版本升级到 14 后&#xff0c;相比 13 版本是一个改动很大的大版本升级&#xff0c;很多概念或者使用方式 13 版本都有较大的区别&#xff0c;因此这里记录一些学习 14 版本的 Next.js 的心得体会或者问题。因为…

LeetCode491. Non-decreasing Subsequences

文章目录 一、题目二、题解 一、题目 Given an integer array nums, return all the different possible non-decreasing subsequences of the given array with at least two elements. You may return the answer in any order. Example 1: Input: nums [4,6,7,7] Output…

sqli-labs(5)

23. 判断是注释符被过滤了我们用‘1’‘1来闭合后面的’ 这里不能使用order by来判断列数直接通过union select来判断 -1 union select 1,2,3 and 11 -1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schemasecurity) ,3 an…

如何使用cpolar+Jellyfin自建私人影音平台【内网穿透】

&#x1f3a5; 个人主页&#xff1a;深鱼~ &#x1f525;收录专栏&#xff1a;cpolar &#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpo…

Java[list/set]通用遍历方法之Iterator

//原始for遍历是用索引来进行遍历 但是现在我们的set集合里面是没有索引的 //所以原先的普通for遍历只能在list遍历中进行//以下的三种遍历方法可以在list和set两种类型中去使用 //—————————————————————————————————————————————…

SpringBoot参数校验@Validated和@Valid的使用

1、Validated和Valid区别 Validated&#xff1a;可以用在类、方法和方法参数上。但是不能用在成员属性&#xff08;字段&#xff09;上Valid&#xff1a;可以用在方法、构造函数、方法参数和成员属性&#xff08;字段&#xff09;上 2、引入依赖 Spring Boot 2.3 1 之前&…

Linux多线程基本概念

目录 ​编辑 1.什么是进程&#xff0c;线程&#xff0c;并发&#xff0c;并行 优点 缺点 什么资源是线程应该私有的呢 为什么线程切换成本更低呢 3.线程控制 pthread_create lpthread选项 makefile 代码实现 ps -aL 什么是LWP 轻量级进程ID与进程ID之间的区别 LWP与pthr…

软件测试行情堪忧,测试行业将迎来低谷?

前两天跟一个HR朋友聊天&#xff0c;她表示刚在boss上发布了一个普通测试岗位&#xff0c;不到一小时竟然收到了几百份简历。而且简历质量极高&#xff0c;这是往年不敢想象的。岗位少&#xff0c;竞争激烈&#xff0c;这是今年软件测试就业的真实写照&#xff0c;也是所有岗位…