vue props传值层级多,子级孙子级怎么修改传参

news2024/11/25 22:49:15

vue props传值层级多了,子级孙子级怎么修改传参

  • 1.出现背景
  • 2.怎么在孙组件里改变传过来的值呢
    • 2.1这样改是不行的
    • 2.2可行的方法
      • 2.2.1 引用对象只改变单属性
      • 2.2.2 provide和inject

1.出现背景

本来自己写页面的话是直接全部写在一个vue文件里,一个vue文件几千行代码基本都是小事,压根没用到组件传参,所以自己的组件传参也很烂。现在写都是把页面拆的很细的那种了,正好练练自己的组件间传参。
先上一份代码:

//主组件
<template>
  <div class='app-container'>
    <p>父组件</p>
    a {{ params.a }} -- b {{ params.b }} -- num {{ num }}
    <child :params.sync="params" :num.sync="num"></child>
  </div>
</template>
<script>
import child from './child.vue';
export default {
  data() {
    return {
      params: {
        a: 10, b: 20
      },
      num: 26
    }
  },
  components: { child },
  methods: {
    changeParams(data) {
      this.params = data
    }
  },
  provide() {
    return {
      changeParams: this.changeParams
    }
  }
}
</script>
//子组件
<template>
  <div class='app-container'>
    <p></p>
    <p>子组件</p>
    a {{ params.a }} -- b {{ params.b }} -- num {{ num }}
    <grandson :params.sync="params" :num.sync="num"></grandson>
  </div>
</template>
<script>
import grandson from './grandson.vue';
export default {
  props: {
    params: Object,
    num: Number
  },
  components: { grandson },
}
</script>
//孙组件
<template>
   <div class='app-container'>
      <p></p>
      <p>孙组件</p>
      a {{ params.a }} --num {{ num }} b <el-input v-model="params.b"></el-input>
      <el-button @click="change">change</el-button>
   </div>
</template>
<script>
export default {
   props: {
      params: Object,
      num: Number
   },
   methods: {
      change() {
         //错误的
         // this.params = {
         //    a:10,b:10
         // }
         //错误的
         //this.num = 10;
         //修改一个属性是可以的
         //this.params.b = 10
         //this.params.a = 1
         // this.$emit('update:params',{
         //    a:10,b:10
         // })
         // this.$root.eventHub.$emit('changeParams')

         // this.changeParams({ a: 10, b: 10 })

      }
   },
   inject: ['changeParams']
}
</script>

可以看到的是我们主要讲params和num传了下去
大概页面效果是这样吧
在这里插入图片描述

2.怎么在孙组件里改变传过来的值呢

2.1这样改是不行的

    //错误的
          this.params = {
             a:10,b:10
          }
         //错误的
         this.num = 10;

直接在change事件里这样改变是不可以的,直接报错
在这里插入图片描述

 this.$emit('update:params',{
            a:10,b:10
         })

这样写的话,子组件的值是可以改变的,但是依然会报错
在这里插入图片描述
在这里插入图片描述

2.2可行的方法

2.2.1 引用对象只改变单属性

可行的方法 发现只改引用对象的单属性是可以成功的!

 this.params.b = 10
         this.params.a = 1

在这里插入图片描述
但是属性多了的话可能就不太优雅了

2.2.2 provide和inject

最后可以用provide和inject来实现

//主组件
methods: {
    changeParams(data) {
      this.params = data
    }
  },
  provide() {
    return {
      changeParams: this.changeParams
    }
  }
  //孙组件
   methods: {
      change() {
         this.changeParams({ a: 10, b: 10 })

      }
   },
   inject: ['changeParams']

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/616297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【solidworks】此文档 templates\gba0.drwdot 使用字体长仿宋体,而该字体不可用

一、问题背景 在SolidWorks中绘制工程图纸时&#xff0c;新建一个图纸&#xff0c;打开后就弹出字体错误 此文档 templates\gba0.drwdot 使用字体长仿宋体&#xff0c;而该字体不可用。 二、解决办法 点击选择新的字体&#xff0c;拖到最下面选择汉仪长仿宋体。 上面之所…

41 管理虚拟机可维护性-虚拟机NMI Watchdog

文章目录 41 管理虚拟机可维护性-虚拟机NMI Watchdog41.1 概述41.2 注意事项41.3 操作步骤 41 管理虚拟机可维护性-虚拟机NMI Watchdog 41.1 概述 NMI Watchdog是一种用来检测Linux出现hardlockup&#xff08;硬死锁&#xff09;的机制。通过产生NMI不可屏蔽中断&#xff0c;…

win10+tf2.x+cuda+cudnn踩坑记录( Loaded cuDNN version 8400)

项目场景&#xff1a; 项目用到了tensorflow2.x&#xff1a; 想要用GPU跑算法win10系统下需要安装cuda和cudnn配置带有tenserflow-gpu的环境 问题描述 jyputer运行错误提示&#xff1a;Loaded cuDNN version 8400 Could not locate zlibwapi.dll. Please make sure it is in…

智安网络|保护企业网络空间资产安全的重要性

在数字化时代&#xff0c;企业网络空间资产的安全和保护变得越来越重要&#xff0c;并且拥有安全性能优越、系统完整的企业网络系统&#xff0c;是企业发展的必要条件。但想要实现网络空间安全首先需要关注网络漏洞问题。 保护企业网络空间资产的重要性 网络空间资产安全是企…

【深度学习】跌倒识别(带数据集和源码)从0到1,内含很多数据处理的坑点和技巧,收获满满

文章目录 前言1. 数据集1.1 数据初探1.2 数据处理1.3 训练前验证图片1.4 翻车教训和进阶知识 2. 训练3.效果展示 前言 又要到做跌倒识别了。 主流方案有两种&#xff1a; 1.基于关键点的识别&#xff0c;然后做业务判断&#xff0c;判断跌倒&#xff0c;用openpose可以做到。…

Neural Architecture Search: A Survey

本文是神经架构搜索相关主题的第一篇文章&#xff0c;针对《Neural Architecture Search: A Survey》的一个翻译。 神经架构搜索&#xff1a;综述 摘要1 引言2 搜索空间3 搜索策略4 性能评估策略5 未来方向 摘要 过去几年&#xff0c;深度学习在图像识别、语音识别和机器翻译…

网络故障排除

计算机网络构成了数字业务的基础。为了确保业务连续性&#xff0c;需要日夜监控和管理这些网络背后的 IT 基础架构。IT 管理员在管理 IT 基础架构时经常遇到问题&#xff0c;这是他们工作的关键部分&#xff0c;更重要的部分是解决网络问题。 什么是网络故障排除 网络故障排除…

推动开源与商业共生共赢 | 2023开放原子全球开源峰会开源商业化创新发展分论坛即将启幕

开源具有利他性&#xff0c;专有软件或私有软件具有利己性&#xff0c;而开源的商业模式也具有利己性。利他性的开源与利己性的商业模式相结合&#xff0c;如何真正为开源做贡献&#xff1f; 由开放原子开源基金会主办&#xff0c;软通动力信息技术&#xff08;集团&#xff0…

【MySQL高级篇笔记-索引优化与查询优化(中) 】

此笔记为尚硅谷MySQL高级篇部分内容 目录 一、索引失效案例 二、关联查询优化 1、采用左外连接 2、采用内连接 3、join语句原理 1.驱动表和被驱动表 2.Simple Nested-Loop Join(简单嵌套循环连接) 3.Index Nested-Loop Join(索引嵌套循环连接) 4.Block Nested-Loop J…

【Web服务器】Nginx+Tomcat负载均衡、动静分离群集

文章目录 一、Tomcat 简介1. Tomcat 重要目录 二、Nginx 负载均衡1. Nginx 应用2. Nginx 负载均衡实现原理2.1 正向代理2.2 反向代理2.3 负载均衡原理总结2.4 配置方向代理的主要参数2.5 Nginx 代理转发类型 3. Nginx 负载均衡模式3.1 rr 轮询 负载均衡模式3.2 least_conn 最少…

优秀测试工程师简历要怎么写?为什么连面试都过不了?

目录 前言 简历请用数字化结果不要只是堆砌工作经历 简历一&#xff1a;我的工作内容有&#xff1a; 简历二&#xff1a;我的工作内容有&#xff1a; 千万别小瞧 了解你的过去是判断你未来的最好方式 增加好印象&#xff0c;记住这些小Tips 1&#xff09;了解公司的特点 2&…

sms开发文档

sms系统设计参考毕业设计-----------学生选课管理系统的设计 一、使用axios 来实现网页中ajax请求 首先说到axios&#xff0c;是一个类库&#xff0c;他的底层基于ajax库&#xff0c;通常用于ajax请求 ajax又是什么 ajax是一种创建快速动态网页的技术&#xff0c; 传统的页…

CiteSpace中心性\引文突现及S值和Q值含义

​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; ​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 中心性为0的解决方法 中文数据的作者&#xff0c;机构由于发文量太少&#xff0c;点过之后…

Linux:Mysql数据库的安装与简单部署。

涉及版本&#xff1a; 安装MySQL需要用到yum命令来安装。 但是yum的仓库内&#xff0c;并没有MySQL的压缩包&#xff0c;因此需要额外搞一个有MySQL的压缩包的远程yum仓库&#xff0c;进行安装MySQL。 想搞到这个yum仓库&#xff0c;就只能到网站下载。 5.7版本&#xff1a; …

Promise-用法

目录 1.处理异步的几种方案 2.理解 3.promise状态&#xff1a;初始化 4.执行异步任务 5.执行异步任务成功 6.执行异步任务失败 7.执行异步任务成功-返回 8.执行异步任务失败-返回 1.处理异步的几种方案 纯粹callback&#xff0c;会剥夺函数return的能力promise&#xf…

浅析kubernates的pv和pvc

文章目录 概要名词解释什么是Pod什么是StorgeClass静态PV和动态PVPV和PVC的生命周期 PVC &#xff0c; PV和 StorageClass的关系小结 概要 最近&#xff0c;在看许多Kubenates的相关文章的时候&#xff0c;了解到了一个概念&#xff0c;是我之前不清楚的。–PV&PVC 。那么今…

Java010——Java八大基本数据类型的进一步学习

前言&#xff1a;前面文章Java009——Java数据类型&变量的简单认识中我们学习了Java数据类型&变量&#xff0c;也简单介绍了Java八大基本数据类型。下面我们继续学习Java八大基本数据类型 回顾&#xff1a;Java八大基本数据类型 大类 类型名称 关键字 占用内…

理性讨论,4年经验,面试要20K很高吗?....

普通二本&#xff0c;4年多测试工作经验&#xff0c;现在依然在测试岗位&#xff0c;只是时间长了和一些个人原因有跳槽的想法&#xff0c;懂python&#xff0c;会写脚本&#xff0c;会selenium&#xff0c;会性能&#xff0c;本来信心满满的&#xff0c;像这样优秀的人找份高薪…

CAN304 计算机安全

本笔记来自基友 加特-林 Lec1: Computer security的概念&#xff0c;一些术语&#xff0c;攻击类型 CIA Lec2&#xff1a;对称加密&#xff0c;Shift cipher&#xff0c;Vigenere&#xff0c;AES&#xff0c;块加密 私钥加密的别称为对称加密 比如shift cipher&#xff…

腾讯、阿里入选首批“双柜台证券”,港股市场迎盛夏升温?

6月5日&#xff0c;香港交易所发布公告&#xff0c;将于6月19日在香港证券市场推出“港币&#xff0d;人民币双柜台模式”&#xff0c;当日确定有21只证券指定为双柜台证券。同时&#xff0c;港交所还表示&#xff0c;在双柜台模式推出前&#xff0c;更多证券或会被接纳并加入双…