系列导航

vue学习笔记 一、环境搭建

vue学习笔记 二、环境搭建+项目创建

vue学习笔记 三、文件和目录结构

vue学习笔记 四、定义组件(组件基本结构)

vue学习笔记 五、创建子组件实例

vue学习笔记 六、ref定义单个数据

vue学习笔记 七、方法的定义和使用

vue学习笔记 八、toRef的使用

vue学习笔记 九、父子组件实例-基本结构

vue学习笔记 十、状态管理基础结构

vue学习笔记 十一、计算属性介绍

vue学习笔记 十二、通过计算属性获取定义的状态数据

vue学习笔记 十三、路由介绍

vue学习笔记 十四、页面跳转

vue学习笔记 十五、组件挂载过程及query方式带参数的页面跳转

vue学习笔记 十六、params方式带参数的页面跳转

vue学习笔记 十七、父子组件 ---> 子组件传值

vue学习笔记 十八、父子组件相互传递参数

vue学习笔记 十九、实例完整代码

   

基于上一节内容补充子组件向父组件传递参数的方法。

一、 效果

1、红色部分是子组件中onMounted方法触发向父组件传递的参数

2、点击传值给父组件后,调用的是子组件中send方法触发的向父组件传递参数的方法。

二、  项目结构截图

三、代码:

index.js 跟上一节完全一样

import { createRouter, createWebHistory,createWebHashHistory } from 'vue-router'
import Start from '../views/Start.vue' //路由的配置属组
//paht:路由路劲 必须以/开头 必填
//component:对应的路由组件 必填
//name:路由的名字
const routes = [
{
path: '/',
name: 'Start',
component: Start
},
{
path: '/home',
name: 'Home',
//按需引入
//如果没有访问/about 就不会加载这个组件 节约性能
component: () => import( '../views/Home.vue')
},
{
path: '/about',
name: 'About',
//按需引入
//如果没有访问/about 就不会加载这个组件 节约性能
component: () => import( '../views/About.vue')
} ,
{ //页面直接输入http://localhost:8080/Test 就可以进入test.vue页面
path: '/father',
name: 'Father',
//按需引入
//如果没有访问/about 就不会加载这个组件 节约性能
component: () => import( '../views/father.vue')
}
] //创建路由对象
const router = createRouter({
//createWebHashHistory hash模式路径前面会多一个#号
history: createWebHistory(process.env.BASE_URL),
routes
}) export default router

father.vue

<template>
<div class="about">
<h1>This is an father page</h1>
子组件传递过来的参数:{{ziParamter}} <!--父组件向子组件传递参数 动态绑定属性 msg的值从return中找到-->
<!--@send为自定义事件,用来接收子组件向父组件传递参数用 send要和子组件中 ctx.emit('send',childMsg.value) 中的第一个参数相同-->
<child :msgZi ='msg' @send='sendDetail'></child> </div>
</template> <script>
import {defineComponent,ref} from 'vue'
import child from '../components/child/Child.vue'
export default defineComponent({
name : 'Father',
components:{
child
},
setup(){
let msg =ref('father params')
let ziParamter = ref('') let sendDetail =(val)=>{
console.log(val)
ziParamter.value = val
} return{
msg,
sendDetail,
ziParamter,
}
} }) </script>

Child.vue

<template>
<div class="about">
<h1>This is an child page</h1>
父组件传递过来的数据:{{msgZi}}
<button @click="send">传值给父组件</button>
</div>
</template> <script>
import {defineComponent,ref,onMounted} from 'vue'
export default defineComponent({
name : 'Child',
//专门接收父组件传递过来的参数
//props接收的数据不能直接改
props:{
msgZi:{
//数据校验
type:String,
//是否必传 默认是false
required:true,
//设置默认值
default:'默认值'
}
},
setup(props,ctx){
console.log(props.msgZi) let childMsg =ref('我是子组件的数据')
let childNum =ref(10) onMounted(()=>{
//ctx.emit 是触发子组件向父组件传递参数的入口
//传多个参数可以用数组的方式
//ctx.emit('send',[childMsg.value,childNum.value])
//多个参数还可以是对象的方式
ctx.emit('send',{
msg:childMsg.value,
num:childNum.value})
}) let send =()=>{
//通过ctx.emit分发事件
//emit第一个参数是 事件名称 第二个参数是传递的数据
ctx.emit('send',childMsg.value)
}
return{
send
}
}
}) </script>

vue学习笔记 十八、父子组件相互传递参数的更多相关文章

  1. python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置

    python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置Download JetBrains Python IDE :: PyCharmhttp://www. ...

  2. Vue.js 父子组件相互传递数据

    父传子 : 子组件接收变量名=父组件传递的数据 如::f-cmsg="fmsg"  注意驼峰问题 子传父:@子组件关联的方法名 = 父组件接受的方法名 如:@func=" ...

  3. vue学习笔记(十)路由

    前言 在上一篇博客vue学习笔记(九)vue-cli中的组件通信内容中,我们学习组件通信的相关内容和进行了一些组件通信的小练习,相信大家已经掌握了vue-cli中的组件通信,而本篇博客将会带你更上一层 ...

  4. Vue.js学习笔记 第八篇 组件

    全局注册组件 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...

  5. vue组件-构成组件-父子组件相互传递数据

    组件对于vue来说非常重要,学习学习了基础vue后,再回过头来把组件弄透! 一.概念 组件意味着协同工作,通常父子组件会是这样的关系:组件 A 在它的模版中使用了组件 B . 它们之间必然需要相互通信 ...

  6. vue学习笔记(1)—— 组件化实现todoList

    一.环境搭建 1.npm 大型应用时推荐用npm安装,npm能很好的和webpack等模块打包器配合使用.具体安装步骤请参考网上的诸多教程.完成后使用如下命令安装vue. $ npm install ...

  7. vue 父子组件相互传递数据

    例子一 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta ...

  8. 从零开始的vue学习笔记(八)

    前言 今天花一天时间阅读完Vue Router的官方文档的基础部分,简单的做一下总结和记录 Vue Router是什么 Vue Router 是 Vue.js 官方的路由管理器,用于构建单页应用(SP ...

  9. vue学习笔记(五)— 组件通信

    关于vue父子组件通信 作者:狐狸家的鱼 本文链接:vue组件通信 GitHub:sueRimn 如果组件是一个单页面,组件之间存在父子关系,数据传递就需要根据父子不同的地位使用不同的办法. 借助新建 ...

  10. (C/C++学习笔记) 十八. 继承和多态

    十八. 继承和多态 ● 继承的概念 继承(inheritance): 以旧类为基础创建新类, 新类包含了旧类的数据成员和成员函数(除了构造函数和析构函数), 并且可以派生类中定义新成员. 形式: cl ...

随机推荐

  1. 公司要做大数据可视化看板,除了EXCEL以外有没有好用的软件可以用

    当企业需要进行大数据可视化看板的设计和开发时,除了Excel,还有许多其他强大且适合大数据可视化的软件工具.以下是几种常用的好用软件,以及它们的特点和优势,供您参考. 一.Datainside 特点和 ...

  2. 【UniApp】-uni-app-全局数据和局部数据

    前言 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-全局样式和局部样式 那么了解完了全局样式和局部样式之后,这篇文章我再来给大家介绍一下 UniApp 中全局数据和局部数据 搭建演示环境 ...

  3. SpringCore完整学习教程4,入门级别

    本章从第4章开始 4. Logging Spring Boot使用Commons Logging进行所有内部日志记录,但保留底层日志实现开放.为Java Util Logging.Log4J2和Log ...

  4. [CF1854C] Expected Destruction

    题目描述 You have a set $ S $ of $ n $ distinct integers between $ 1 $ and $ m $ . Each second you do th ...

  5. PanguHA,一款Windows双机热备工具

    1.简介 PanguHA是Windows平台的双机热备集群系统,是提供系统高可用性的解决方案,一般由两个节点构成,分为活动节点及备用节点(两者之间可以相互切换),软件界面如下 PanguHA下载地址 ...

  6. ElasticSearch之Search settings

    相关参数 indices.query.bool.max_clause_count 本参数当前已失效. search.max_buckets 本参数用于控制在单个响应中返回的聚合的桶的数量. 默认值为6 ...

  7. java:JDBC使用步骤(mysql)java小白的第一篇博客

    1:环境要求 先在你的mysql里面创造一个数据库(并添加一点数据) 下载并导入驱动 2:jdbc的五大步骤 第一步:加载mysql驱动: 1 Class.forName("com.mysq ...

  8. QT OpenGLWidget高分屏适配时出现的问题

    参考官方文档,为了解决4K屏幕显示QT界面时出现窗口变小分辨率不匹配的问题,我们可以在 QApplication a(argc, argv); 这句之前添加: #if (QT_VERSION > ...

  9. Asp .Net Core系列:AutoMapper自动映射框架介绍、使用

    1.介绍 AutoMapper是一个对象-对象映射器.对象-对象映射通过将一种类型的输入对象转换为另一种类型的输出对象来工作.使AutoMapper变得有趣的是,它提供了一些有趣的约定,以免去搞清楚如 ...

  10. ChatGPT 同类工具推荐

    原文: https://openaigptguide.com/chatgpt-similar%20software/ ChatGPT是一款由美国OpenAI公司开发的人工智能语言模型,类似的软件有: ...