vue3中父组件与组件之间参数传递,使用(defineProps/defineEmits),涉及属性传递,对象传递,数组传递,以及事件传递
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),涉及属性传递,对象传递,数组传递,以及事件传递的更多相关文章
- 微信小程序:给data中对象中的属性设置值与给data中的属性或对象或数组设置值的区别
一.给data中的属性或对象或数组设置值,属性名不需要加引号 this.setData({ material: param, // 这里material为对象 } this.setData({ d ...
- wx小程序自定义组件与页面之间参数传递
在开发中,很多页面中会使用相同的组件,这时可以将具有相同信息的部分封装成一个组件,方便开发中调用.在调用中可能会涉及到数据的传递问题,例如页面与组件,组件与组件直接的数据传递. 首先看看页面与组件直接 ...
- Jquery中父,子页面之间元素获取及方法调用
一.jquery 父.子页面之间页面元素的获取,方法的调用: 1. 父页面获取子页面元素: 格式:$("#iframe的ID").contents().find("#if ...
- 在vue3中使用router-link-active遇到的坑
在使用 router-link-active 设置链接激活时CSS类名时,发现在例如 /member/order 和 /member/order/:id 这两个都包含 /member/order的路由 ...
- 微信小程序 - 组件 | 自定义组件 | 组件事件传递页面
组件 小程序允许我们使用自定义组件的方式来构建页面 类似Vue的小组件 自定义组件 类似于页面,一个自定义组件由 json, wxml, wxss, js 4个文件组成 1.创建 1.创建compon ...
- [Android学习]Activity之间传递对象和对象集合
开发过程中,Activity之间传递数据是必不可少的,android中使用Intent和Bundle作为数据载体,在Activity之间传递,对于基础数据类型,Bundle已经提供相关的put,get ...
- React中父组件与子组件之间的数据传递和标准化的思考
React中父组件与子组件之间的数据传递的的实现大家都可以轻易做到,但对比很多人的实现方法,总是会有或多或少的差异.在一个团队中,这种实现的差异体现了每个人各自的理解的不同,但是反过来思考,一个团队用 ...
- 纯小白入手 vue3.0 CLI - 2.7 - 组件之间的数据流
vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 尽量把纷繁的知识,肢解重组成为可以堆砌的知识. ...
- 【转载】vue3 中如何像 vue2 的 extend 一样挂载未挂载的组件,拿到标签本身($el)
原文地址:https://blog.csdn.net/qq_39953537/article/details/110437554 vue3 中如何像 vue2 的 extend 一样挂载未挂载的组件, ...
- Vue3 中的组件 provide和inject 传值、获取组件实例的方法getCurrentInstance()
一. provide和inject(依赖注入) 1:在父级组件中提供数据 语法:provide('提供给子组件的变量名',提供给子组件的数据) 2: 在子级组件中获取收据 ...
随机推荐
- Android开发_记事本(1)
一些知识 Textview TextView中有下述几个属性: id:为TextView设置一个组件id,根据id,我们可以在Java代码中通过findViewById()的方法获取到该对象,然后进行 ...
- 太坑了吧!一次某某云上的redis读超时排查经历
一次排查某某云上的redis读超时经历 性能排查,服务监控方面的知识往往涉及量广且比较零散,如何较为系统化的分析和解决问题,建立其对性能排查,性能优化的思路,我将在这个系列里给出我的答案. 问题背景 ...
- ELF文件格式解析
ELF(Executable and Linkable Format) 即可执行可链接文件格式,是目前操作系统上最常见的可执行文件格式.不同系统的目标文件不一样,Windows是PE(Portable ...
- ansible-kubeadm在线安装k8s v1.19-v1.20版本
ansible-kubeadm在线安装k8s v1.19-v1.20版本 1. ansible-kubeadm在线安装k8s v1.19-v1.20版本 安装要求 确保所有节点系统时间一致 操作系统要 ...
- [aac @ 0x1dd24c0] Input contains NaN/+-Inf
ffmpeg编码pcm为aac时报错:[aac @ 0x1dd24c0] Input contains NaN/+-Inf 在./configure选项后面加上下列选项就可以 --enable-enc ...
- 笔记:linux必备网络基础概念和以太网技术基础
笔记:linux必备网络基础概念和以太网技术基础 由于后面可能需要对交换机进行一些配置,所以也是临时学习一下iptables的相关配置,以及一些基本的网络知识,下面就是我看到一些资料做的一些总结,希望 ...
- Protobuf编码规则
支持类型 该表显示了在 .proto 文件中指定的类型,以及自动生成的类中的相应类型: .proto Type Notes C++ Type Java/Kotlin Type[1] Java/Kotl ...
- Pwn系列之Protostar靶场 Stack2题解
(gdb) disass main Dump of assembler code for function main: 0x08048494 <main+0>: push ebp 0x08 ...
- 关于OA系统的取数依据,以及如何逆向查询数据错误的思路。
1.正文 00.起因 源于财务在群里发的问题.我估计对于很多同事,又会像往常一样充满疑问,尤其是对于oa的取数会有疑问,然后业务能力极差的那部分,又会想到这是运营的问题(话说关运营什么事?),这是项目 ...
- Yolov5 根据自己的需要更改 预测框box和蒙版mask的颜色
1.首先找到项目中 utils/plots.py 文件,打开该代码 将原来的 Colors类注释掉(或删掉),改成如下Colors类 class Colors: def __init__(self): ...