Vue3 中子父组件之间的通信

一、父组件传递参数到子组件 采用defineProps

传递属性

父组件:

<template>
<div>
<h1>这是父组件</h1>
<h1>父组件像子组件传递参数</h1>
<h2>传递属性值</h2> <HH :fatherMessage="fatherMessage" :valNum="valNum" :valBool="valBool" />
</div>
</template> <script setup>
import { ref } from "vue";
import HH from "@/components/HelloWorld";
//定义参数进行传递到子组件
let fatherMessage = ref("大头"); //字符
let valNum = ref(1); //数字
let valBool = ref(true); //布尔类型 </script> <style>
</style>

子组件:

<template>
<div>
<h1>这是子组件</h1>
<h2>属性值接收区</h2>
<div style="margin: 5px; border: 2px solid gold">
父组件传值接收区:字符型:{{ fatherMessage }},数字类型:{{
valNum
}},布尔类型:{{ valBool }}
</div>
</div>
</template>
<script setup>
import { defineProps, defineEmits } from "vue";
//使用defineProps接收父组件传递的参数
defineProps({
fatherMessage: {
type: String,
},
valNum: {
type: Number,
},
valBool: {
type: Boolean,
},
}); </script>

传递对象或者数组

父组件:

<template>
<div>
<h1>这是父组件</h1>
<h1>父组件像子组件传递参数</h1>
<h2>传递属性值</h2>
<HH
:fatherMessage="fatherMessage"
:valNum="valNum"
:valBool="valBool"
:testprop="testprop"
:testprops="testpropLlist"
/> </div>
</template> <script setup>
import { ref, reactive } from "vue";
import HH from "@/components/HelloWorld";
let fatherMessage = ref("大头"); //字符
let valNum = ref(1); //数字
let valBool = ref(true); //布尔类型
//定义数组
const propsList = [
{ name: "李四", Id: 1 },
{ name: "张三", Id: 2 },
{ name: "王麻子", Id: 3 },
];
//定义对象
const myObj = reactive({
name: "zs",
age: 20,
}); let testprop = ref(myObj); let testpropLlist = ref(propsList); </script> <style>
</style>

子组件:

<template>
<div>
<h1>这是子组件</h1>
<h2>属性值接收区</h2>
<div style="margin: 5px; border: 2px solid gold">
父组件传值接收区:字符型:{{ props.fatherMessage }},数字类型:{{
props.valNum
}},布尔类型:{{ props.valBool }}
</div>
<h2>对象/数组接收区</h2>
<div style="margin: 5px; border: 2px solid rgb(77, 52, 219)">
父组件传值接收区: 对象接收:{{ props.testprop }},数组接收:{{
props.testprops
}},数组单个值:{{ vvv }}} ,循环数组的值:
<ul>
<li v-for="item in props.testprops" :key="item.Id">
{{ item.name }}
</li>
</ul>
</div> </div>
</template>
<script setup>
import { defineProps, defineEmits, toRefs } from "vue";
const props = defineProps({
fatherMessage: {
type: String,
},
valNum: {
type: Number,
},
valBool: {
type: Boolean,
},
//接收对象 对象如果要使用某个值的时候 需要用 const vvv = toRefs(props.testprop).name
testprop: {
type: Object,
},
//接收数组
testprops: {
type: Array,
default: () => [],
},
});
//获取数组中某一个值
const vvv = toRefs(props.testprops[0]).name; </script>

二、子组件向父组件传递事件 采用defineEmits

父组件:

<template>
<div>
<h1>这是父组件</h1>
<h2>事件传递</h2>
<HH @add="eat" />
<div style="margin: 5px; border: 2px solid gold">
子组件传值接收区: 变化数量:{{ num }}
</div>
<HH @getvale="getstr" />
<div style="margin: 5px; border: 2px solid rgb(26, 255, 186)">
子组件传值接收区: 参数内容获取:{{ valstr }}
</div>
</div>
</template> <script setup>
import { ref } from "vue";
import HH from "@/components/HelloWorld";
//事件传递
let valstr = ref();//接收内容
let num = ref(0);//数字加减
//触发加减事件
const eat = (value) => {
num.value += value;
};
//通过子组件的事件向父组件传递参数
const getstr = (value) => {
valstr.value = value;
};
</script> <style>
</style>

子组件:

<template>
<div>
<h1>这是子组件</h1>
<h2>自定义事件传递,子组件向父组件进行传递</h2>
<button @click="meat">点击我</button>
<button @click="getstr">点击我传递参数</button>
</div>
</template>
<script setup>
import { defineProps, defineEmits } from "vue";
const emit = defineEmits(["add"], ["getvale"]); // 自定义事件,可以自定义多个事件
const meat = () => {
// 触发自定义事件
emit("add", 1);
};
const getstr = () => {
emit("getvale", "子组件传过来的值");//第一个参数为事件名称,第二个参数为参数数据
};
</script>

vue3中父组件与组件之间参数传递,使用(defineProps/defineEmits),涉及属性传递,对象传递,数组传递,以及事件传递的更多相关文章

  1. 微信小程序:给data中对象中的属性设置值与给data中的属性或对象或数组设置值的区别

    一.给data中的属性或对象或数组设置值,属性名不需要加引号 this.setData({ material: param, // 这里material为对象 } this.setData({   d ...

  2. wx小程序自定义组件与页面之间参数传递

    在开发中,很多页面中会使用相同的组件,这时可以将具有相同信息的部分封装成一个组件,方便开发中调用.在调用中可能会涉及到数据的传递问题,例如页面与组件,组件与组件直接的数据传递. 首先看看页面与组件直接 ...

  3. Jquery中父,子页面之间元素获取及方法调用

    一.jquery 父.子页面之间页面元素的获取,方法的调用: 1. 父页面获取子页面元素: 格式:$("#iframe的ID").contents().find("#if ...

  4. 在vue3中使用router-link-active遇到的坑

    在使用 router-link-active 设置链接激活时CSS类名时,发现在例如 /member/order 和 /member/order/:id 这两个都包含 /member/order的路由 ...

  5. 微信小程序 - 组件 | 自定义组件 | 组件事件传递页面

    组件 小程序允许我们使用自定义组件的方式来构建页面 类似Vue的小组件 自定义组件 类似于页面,一个自定义组件由 json, wxml, wxss, js 4个文件组成 1.创建 1.创建compon ...

  6. [Android学习]Activity之间传递对象和对象集合

    开发过程中,Activity之间传递数据是必不可少的,android中使用Intent和Bundle作为数据载体,在Activity之间传递,对于基础数据类型,Bundle已经提供相关的put,get ...

  7. React中父组件与子组件之间的数据传递和标准化的思考

    React中父组件与子组件之间的数据传递的的实现大家都可以轻易做到,但对比很多人的实现方法,总是会有或多或少的差异.在一个团队中,这种实现的差异体现了每个人各自的理解的不同,但是反过来思考,一个团队用 ...

  8. 纯小白入手 vue3.0 CLI - 2.7 - 组件之间的数据流

    vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 尽量把纷繁的知识,肢解重组成为可以堆砌的知识. ...

  9. 【转载】vue3 中如何像 vue2 的 extend 一样挂载未挂载的组件,拿到标签本身($el)

    原文地址:https://blog.csdn.net/qq_39953537/article/details/110437554 vue3 中如何像 vue2 的 extend 一样挂载未挂载的组件, ...

  10. Vue3 中的组件 provide和inject 传值、获取组件实例的方法getCurrentInstance()

    一. provide和inject(依赖注入) 1:在父级组件中提供数据           语法:provide('提供给子组件的变量名',提供给子组件的数据) 2: 在子级组件中获取收据     ...

随机推荐

  1. [git] 规范Commit格式

    规范Commit格式 Jenkins根据对比当次构建和上次构建的Commit信息来生成ChangeLog,但因为我们目前的提交不够规范,经常有类似"#","update& ...

  2. 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置

    目录 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 CH32V208 CH32V208系列是沁恒32位RISC-V中比较新的一个系列, 基于青稞RISC ...

  3. python的format方法中文字符输出问题

    format方法的介绍 前言 提示:本文仅介绍format方法的使用和中文的输出向左右和居中输出问题 一.format方法的使用 format方法一般可以解决中文居中输出问题,假如我们设定宽度,当中文 ...

  4. Prisim Sample 7 Modules App.Config

    在项目中添加模块化文件.模块文件怎样在主项目中注册.本例 说明方式一,使用了App.config文件. 其中: <?xml version="1.0" encoding=&q ...

  5. 【Azure 存储服务】Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)

    问题描述 查看Java Storage SDK,想找一个 uploadWithResponse  的示例代码,但是通过全网搜索,结果没有任何有帮助的代码.使用最近ChatGPT来寻求答案,得到非常有格 ...

  6. Yolov5 根据自己的需要更改 预测框box和蒙版mask的颜色

    1.首先找到项目中 utils/plots.py 文件,打开该代码 将原来的 Colors类注释掉(或删掉),改成如下Colors类 class Colors: def __init__(self): ...

  7. 2022-07-10:以下go语言代码输出什么?A:A,B;B:A,C:A,fatal error;D:fatal error... func main() { var m sync.Mute

    2022-07-10:以下go语言代码输出什么?A:A,B:B:A,C:A,fatal error:D:fatal error- func main() { var m sync.Mutex fmt. ...

  8. DataGridViewImageColumn 图片照片

    Private Sub BT_PHOTOADDRESS_Click(sender As Object, e As EventArgs) Handles BT_PHOTOADDRESS.Click Di ...

  9. Python随机UserAgent库,让你不再手动敲UA!

    前言 之前也懵懵懂懂写过python爬虫,但是经常被网站的反爬机制干趴下,然后手动写了个随机UA库,情况才好些.今天在互联网畅游时发现,有一个能够产生随机UA的第三方库! 安装第三方库 老生常谈啦,p ...

  10. 我写了本开源书:《3D编程模式》

    大家好,我写了本开源书,罗列了我从自己的实战项目中提炼出来的关于3D编程(主要包括"3D引擎/游戏引擎"."编辑器"开发)的各种编程模式 本书的在线阅读地址在这 ...