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

vue3组合式api <script setup> props 父子组件的写法

父组件传入子组个的变量, 子组件是无法直接修改的, 只能通过 emit的方式, 让父组件修改, 之后子组件更新

<template><div class="parent">我是父组件<son :msg="msg" :obj="obj" @changemsgEmit="changemsgEmit" @changeobjnameEmit="changeobjnameEmit" @changeobjageEmit="changeobjageEmit"></son></div>
</template><script setup>import {ref, reactive} from "vue";import son from "./son.vue"let msg = ref("this msg form parent.vue");let obj = reactive({name:"huang",age:39})const changeobjageEmit = (params)=>{obj.age = params;}const changeobjnameEmit = (params)=>{obj.name = params.newname;}const changemsgEmit = (params)=>{console.log(params);msg.value = params.join("");}</script><style scoped></style>

父组件的写法没有变, 子组件的写法就有很大的变化了


<template><div class="son">son{{msg}}<hr/>{{obj.name}}{{obj.age}}</div><button @click="changemsg">changemsg</button><button @click="changeobjname(3)" type="button">changeobjname</button><button @click="changeobjage(42)" type="button">changeobjage</button>
</template><script setup>
//这里定义了一个 props来接收传来的属性
//使用时可以是 {{msg}}  也可以使用 {{props.msg}}let props = defineProps({msg:{type:String,default:""},obj:{type:Object,default:{}}})//这里定义了三个自定义事件const emit = defineEmits(["changeobjnameEmit","changeobjageEmit","changemsgEmit"]);//下面是通过事件调用了三个自定义的事件const changeobjname = ()=>{let objname = {newname:"hahaha"}emit("changeobjnameEmit",objname)}const changeobjage = (age)=>{emit("changeobjageEmit",age)}const changemsg = ()=>{emit("changemsgEmit",["aa","bb","cc"]);}</script>
http://www.lryc.cn/news/149251.html

相关文章:

  • Compose - 自定义作用域限制函数
  • 【Flutter】Flutter 使用 photo_view 实现图片查看器
  • 电脑组装教程分享!
  • 【云原生之Docker实战】使用Docker部署flatnotes笔记工具
  • XSSchallenge1-20
  • centos 7的超详细安装教程
  • 代码随想录算法训练营第五十二天 | 300.最长递增子序列,674. 最长连续递增序列,718. 最长重复子数组
  • 计算机图形软件(三)6-6 小结
  • Flink常用函数
  • stable diffusion实践操作-embedding(TEXTUAL INVERSION)
  • 代码随想录二刷day03
  • 初出茅庐的小李博客之STM32F103C8T6音乐控制器实战教程【1】
  • 苍穹外卖01-项目概述、环境搭建
  • 图床项目进度(二)——动态酷炫首页
  • Java“魂牵”京东商品详情描述数据,京东商品详情API接口,京东API接口申请指南
  • Flink SQL你用了吗?
  • 【位运算】leetcode面试题:消失的两个数字
  • Vue2 集成 CodeMirror 实现公式编辑、块状文本编辑,TAG标签功能
  • CCF-CSP 30次 第二题【矩阵运算】
  • 最大子数组和【贪心算法】
  • linux并发服务器 —— Makefile与GDB调试(二)
  • Ansible学习笔记14
  • docker 安装 mysql 并挂载 配置文件和数据目录
  • 代码随想录训练营 DP01
  • github+hexo 博客搭建
  • Spring Security bug记录:antMatchers找不到符号(已解决)
  • kaggle新赛:谷歌AI模型运行时间预测赛题解析【数据挖掘】
  • mysql性能测试工具选择 mysql软件测试
  • GPS全球卫星定位系统原理
  • Ubuntu学习---跟着绍发学linux课程记录(第一部分)