1.父转子

// 父组件

<template>
<div>
<div>
<p>{{ count }}</p>
<Son :countFa="count"/>
</div>
</div>
</template> <script setup>
import { ref } from "vue";
import Son from "./son.vue";
const count = ref("我是父组件的值----- 100");
</script>
// 子组件

<template>
<div>
<div>
<div>{{ countFa }}</div>
</div>
</div>
</template> <script setup>
import { ref } from "vue";
const count = ref(790);
const props = defineProps({
countFa: String,
})
</script>

2.子传父

// 父组件

<template>
<div>
<div>
<p>{{ count }}</p>
<Son @changeData="changeData"/>
</div>
</div>
</template> <script setup>
import { ref } from "vue";
import Son from "./son.vue";
const count = ref("我是父组件的值----- 100");
const changeData = (val) => { console.log(val.value); }
</script>
// 子组件

<template>
<div>
<div>
<div>{{ count }}</div>
<div>
<button @click="getClick">button</button>
</div>
</div>
</div>
</template> <script setup>
import { ref, defineEmits } from "vue";
const count = ref(790); const emits = defineEmits(["changeData"]); // 声明触发事件 childClick // 子组件触发父组件方法
const getClick = () => {
count.value++;
emits("changeData", count);
}; </script>

3.父组件调用子组件方法

// 父组件

<template>
<div>
<div>
<p>{{ count }}</p>
<button @click="handleClick">点击调用子组件方法</button>
<Son ref="sonRef" />
</div>
</div>
</template> <script setup>
import { ref } from "vue";
import Son from "./son.vue";
const count = ref("我是父组件的值----- 100");
const sonRef = ref(null);
const handleClick = () => {
sonRef.value.show(798);
};
</script>
// 子组件

<template>
<div>
<div>
<div>{{ count }}</div>
</div>
</div>
</template> <script setup>
import { ref, defineExpose } from "vue";
const count = ref(790); const show = (val) => {
console.log("我是父组件调用子组件的方法", val);
}; defineExpose({
// 这个要加
show,
});
</script>

  

你可以通过在生命周期钩子前面加上 “on” 来访问组件的生命周期钩子。
下表包含如何在 setup () 内部调用生命周期钩子: beforeCreate -> setup()
created -> setup()
beforeMount -> onBeforeMount
mounted -> onMounted
beforeUpdate -> onBeforeUpdate
updated -> onUpdated
beforeDestroy -> onBeforeUnmount
destroyed -> onUnmounted
activated -> onActivated
deactivated -> onDeactivated
errorCaptured -> onErrorCaptured

  

模板Refs
通过ref()函数还可以引用页面上的元素或组件

使用步骤:
1、在setup()中创建一个ref对象并返回它
2、在页面上为元素添加ref属性,并设置属性值与创建的ref对象的名称相同
3、当页面渲染完成后,可以通过该ref独享获取到页面中对应的DOM元素

 

链接:https://github.com/mtdream/learningV3

vue3 父子组件间的传值通信的更多相关文章

  1. vue组件定义方式,vue父子组件间的传值

    vue组件定义方式,vue父子组件间的传值 <!DOCTYPE html> <html lang="zh-cn"> <head> <met ...

  2. Vue—非父子组件间的传值(Bus/发布订阅模式/观察者模式/总线)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. vue bus方式解决非父子组件间的传值

    对于非父子组件之间的传值 通常使用VUEX 和总线等方式解决 这里我聊聊发布订阅模式(总线) <body> <div class="app"> <ch ...

  4. React父子组件间的传值

    父组件: import React, { Component } from 'react'; import Child from './chlid'; class parent extends Com ...

  5. 五、react中父子组件间如何传值

    1.父组件向子组件传递数据:父组件绑定属性值传给子组件,子组件通过this.props()接受. 2.子组件向父组件传递数据:子组件绑定一个方法,方法中通过this.props.父组件方法名(参数)传 ...

  6. react组件间的传值方法

    关于react的几个网站: http://react.css88.com/ 小书:http://huziketang.mangojuice.top/books/react/ http://www.re ...

  7. 第四节:Vue表单标签和组件的基本用法,父子组件间的通信

    vue表单标签和组件的基本用法,父子组件间的通信,直接看例子吧. <!DOCTYPE html> <html> <head> <meta charset=&q ...

  8. Vue的父子组件间通信及借助$emit和$on解除父子级通信的耦合度高的问题

    1.父子级间通信,父类找子类非常容易,直接在子组件上加一个ref,父组件直接通过this.$refs操作子组件的数据和方法    父 这边子组件中 就完成了父 => 子组件通信 2. 子 =&g ...

  9. React中父子组件间的通信问题

    1.https://blog.csdn.net/sinat_17775997/article/details/59103173 (React中父子组件间的通信问题)

  10. vue之父子组件间通信实例讲解(props、$ref、$emit)

       组件间如何通信,也就成为了vue中重点知识了.这篇文章将会通过props.$ref和 $emit 这几个知识点,来讲解如何实现父子组件间通信. 组件是 vue.js 最强大的功能之一,而组件实例 ...

随机推荐

  1. 企业版Spark Databricks + 企业版Kafka Confluent 联合高效挖掘数据价值

    ​简介:本文介绍了如何使用阿里云的Confluent Cloud和Databricks构建数据流和LakeHouse,并介绍了如何使用Databricks提供的能力来挖掘数据价值,使用Spark ML ...

  2. DDD as Code:如何用代码诠释领域驱动设计?

    简介: 相较于常规的MVC架构,DDD更抽象.更难以理解,各个开发者对DDD的解释也不尽相同.那么哪种设计方式才更好?在学习时如何知道哪种DDD更正统,没有被别人带歪?本文尝试使用"DDD ...

  3. 如何避免出现SQL注入漏洞

    ​简介: 本文将针对开发过程中依旧经常出现的SQL编码缺陷,讲解其背后原理及形成原因.并以几个常见漏洞存在形式,提醒技术同学注意相关问题.最后会根据原理,提供解决或缓解方案. ​ 作者 | 阿里云安全 ...

  4. Docker Desktop v20.10.8 和 WSL2 迁移镜像存储目录

    只迁移存储镜像和挂载文件目录:https://www.cnblogs.com/lemonK/p/17781775.html 同时迁移docker程序目录:https://www.cnblogs.com ...

  5. 一分钟部署 Llama3 中文大模型,没别的,就是快

    前段时间百度创始人李彦宏信誓旦旦地说开源大模型会越来越落后,闭源模型会持续领先.随后小扎同学就给了他当头一棒,向他展示了什么叫做顶级开源大模型. 美国当地时间4月18日,Meta 在官网上发布了两款开 ...

  6. JAVA也能用上Seq啦

    前言 在.NET生态中,Serilog凭借其强大的结构化日志记录功能和与Seq的无缝集成,已经成为许多开发者的首选日志记录工具.Seq作为一个日志检索和仪表板工具,能够将日志中的插值转换为结构化数据, ...

  7. 01.Markdown 语法

    标题 # 一级标题 ## 二级标题 ### 三级标题 ...(最多六级标题) 字体 **hello**:粗体 *hello*:斜体 三个*:粗体+斜体 ~~hello~~:删除线 引用 > 引用 ...

  8. Ryght 在 Hugging Face 专家助力下赋能医疗保健和生命科学之旅

    本文是 Ryght 团队的客座博文. Ryght 是何方神圣? Ryght 的使命是构建一个专为医疗保健和生命科学领域量身定制的企业级生成式人工智能平台.最近,公司正式公开了 Ryght 预览版 平台 ...

  9. nim 7. nimble--制作包

    1. nim的包管理工具: nimble nim的包管理工具,是nimble. 在安装nim的时候,已经自带了nimble. nible通常需要使用git服务器存储包,因此,本地需要git命令的支持. ...

  10. js中关于return和if条件处理

    好玩的 // if (true) { // return // } // // 不会打印 // console.log('1') // if (false) { // return // } // / ...