须知:vue里子组件无法改变父组件的值

思路:

1. 父组件定义数据 —— const data = ref(false)

2. 把值传递给子组件 —— :sendData = "data"

3. 子组件接收数据,使用、修改完成后 —— props: ["sendData"] —— const a = props.sendData —— a = true

4. 触发父组件事件,传值 —— emit("emitEffect", { emit: a })

5. 被触发的父组件,接收值,并更新自己最开始定义的数据 —— @emitEffect = "changeData" —— const changeData = (value) => { data = value.a }

例子:

父组件:


<template><div class="index"><div class="index__nav"><Indexnav :changeNavFu=changeNavFu @changeNavfu="changeNav" /></div></div>
</template><script>
import { ref } from 'vue'
import Indexnav from './Indexnav.vue'export default {name: 'index',components: { Indexnav, Indextab },setup () {const changeNavFu = ref(false)const changeNav = (val) => {changeNavFu.value = val.dataconsole.log(val)                 // {data:false}}return { changeNavFu, changeNav }}
}
</script><style lang="scss" scoped>
.index{font-size: .13rem;overflow: hidden;width: 100%;height: 100vh;&__nav {width: 2rem;}
}
</style>

子组件:

<template><div class="Indexnav" :style="isCollapse?'width:.63rem':''"><div class="Indexnav__header" @click="changeNav"><div :class="isCollapse?'sider-toggler':'sider-toggler active'"></div></div></div>
</template><script>
import { ref } from 'vue'export default {name: 'Indexnav',components: { Location },props: ['changeNavFu'],setup (props, { emit }) {           // 一定要记得把props和emit传入setup函数const isCollapse = ref(props.changeNavFu)const changeNav = () => {isCollapse.value = !isCollapse.valueemit('changeNavfu', { data: isCollapse.value })}return { isCollapse, changeNav }}
}
</script><style lang="scss" scoped>
@import '../../assets/fonts/iconfont.css';.Indexnav{position: absolute;width: 2rem;top: 0;left: 0;height: 100%;box-shadow: .01rem .02rem .1rem rgba(0,0,0,.5);border-right: 1px solid #f2f4f9;transition: all .1s linear;
}
</style>

vue3基础 —— 子传父相关推荐

  1. vue3.0 组件使用 引用 传值 父传子 子传父

    vue3.0 组件使用 引用 传值 父传子 子传父 组件的创建 组件引入 在html中使用 组件传值 父传子 子接收参数 子传父 父接收参数 组件的创建 1.将所需功能封装在components目录下 ...

  2. Vue3/ Vue3 组件通讯 -- 子传父 方法流程 总结

    一 .Vue3 组件通讯 -- 子传父 方法流程 1. 首先子组件通过 defineEmit 写入传递事件名 并 定义变量名 const 变量名one = defineEmit([' 传递事件名']) ...

  3. vue3组件通信的方式 父传子 props 和子传父 $emit 非父子组件的通信Provide和Inject 全局事件总线mitt库

    vue3组件通信的方式 一.父传子 props 和子传父 $emit 1.父传子 props 在开发中最常见的就是父子组件之间通信,父组件往子组件通信使用的是props.子组件往父组件通信则使用的是 ...

  4. Vue3中的父传子和子传父如何实现

    大家都知道Vue2中父传子是通过父组件绑定一个属性,子组件再用props进行接收,子传父是通过this.$emit那么Vue3中有什么不同呢?以下为您解答谜团 #Vue3的父传子 一.现在父组件调用子 ...

  5. 3.vue3.2的父传子defineProps,子传父emits以及ref

    1.父传子 <template><div class="container"><!-- 传递数据 这里传了一个string 和 一个list --&g ...

  6. 【vue3.0学习】父传子 子传父

    父传子 <template><div id="app"><h1>父组件</h1><p>{{ money }}</p ...

  7. Vue3.2——父传子、子传父

    ## 父传子 父组件: <template><div class="home"><test-com :info="msg" tim ...

  8. VUE3 子传父 父传子 双向传递

    组件参数传递 父传子 father.vue <template > <!-- 父传子实现 2.向vue页面中的子组件传递该属性 :传给子组件的名字(自定义)="对应定义在父 ...

  9. vue3.0组件之父传子,子传父,父传孙

    父组件<template> <!-- <div>{{name}}</div> {{computedsx}} {{sum}}<button @click= ...

最新文章

  1. JavaScript 封装插件学习笔记(一)
  2. 2022-01-24
  3. Leaflet中使用layerGroup图层组实现图层切换
  4. vs2010功能使用体验篇
  5. netty系列之:netty架构概述
  6. SAP 中如何寻找增强
  7. 未来是属于 ARM 为代表的精简指令集还是 x86 为代表的复杂指令集?
  8. 冷藏温度范围_食品冷藏冷冻温度要求与管理规范
  9. python大列表分割成小列表_Python有什么方法将列表分割成大小均匀的块?求使用实例...
  10. java Math类与Number类
  11. 为什么说java语言是支持跨平台的
  12. 8月23号,来上海整整一年
  13. 中国便利店行业战略发展及投资盈利研究报告2022年版
  14. 颜色空间转换-从RGB到LCH-亮度饱和度色度
  15. 基于指纹识别技术的身份认证系统的设计与实现
  16. Java POI导出(图片,文字,表格)word文档
  17. dy\ks直播间人气挂粉
  18. 调研分析-全球与中国冲刺计时系统市场现状及未来发展趋势
  19. edge浏览器怎么设置activex_微软Edge浏览器将不再支持ActiveX等老技术
  20. 开发餐厅里扫餐桌码进行点餐下单

热门文章

  1. linux gtx驱动程序,Nvidia 418.43 发布,支持GeForce GTX 1660 Ti的Linux图形驱动程序
  2. Windos系统使用webdav协议将阿里云盘挂载在本地,并实现Notability等支持webdav协议软件的自动备份
  3. Carrey的第一篇博客
  4. QT下载和安装 指南教程
  5. 小伙子开超市,抓住“人性贪婪”,二个步骤过后,生意瞬间火爆!
  6. 服务器微信发送图片困难是什么原因导致的,微信接受的图片不清楚的原因是什么?怎么发清楚?...
  7. 绘画新手怎么把人物骨骼画好
  8. C# 程序集(Assembly)
  9. H5页面微信自动登录,和微信页面自定义分享样式
  10. Axmath:一款Word公式编辑神器