前端 JS 经典:单向数据流

前言:Vue 的父子组件通信就遵循单向数据流的原则,父组件传给子组件的参数,子组件只能使用,不能修改。

1. 核心概念

数据的拥有者才能修改数据。因为当数据出了问题后只需要去找数据的拥有者就可以了。如果在其他地方也修改这个数据,将来这个数据出了问题,我们要到处去找,不便于维护。

当需要在子组件中修改父组件中的数据时,不能直接修改,我们需要触发父组件的事件,让父组件去修改数据。保持数据单向原则。

2. 父子组件通信

在 Vue 中,父组件通过 props 向子组件传递数据,子组件通过 $emit 触发事件并向父组件通信

3. 祖先组件通信

在 Vue 中,祖先组件和子孙组件通信时,可以通过 provide/inject 进行通信。

父组件中通过 provide 来提供变量,然后在子组件中通过 inject 来注入变量,不论子组件嵌套有多深,只要调用了 inject 就可以注入 provide 中的数据

4. 兄弟组件通信

在 Vue 中,创建一个全局的 Vue 实例来充当事件总线,所有组件都可以监听和触发事件。或者使用状态管理工具 Vuex、Pinia 等。

相关推荐
卤代烃5 分钟前
🦾 可为与不可为:CDP 视角下的 Browser 控制边界
前端·人工智能·浏览器
_XU19 分钟前
AI工具如何重塑我的开发日常
前端·人工智能·深度学习
C_心欲无痕35 分钟前
vue3 - defineExpose暴露给父组件属性和方法
前端·javascript·vue.js·vue3
鹿人戛1 小时前
HarmonyOS应用开发:相机预览花屏问题解决案例
android·前端·harmonyos
萌萌哒草头将军1 小时前
绿联云 NAS 安装 AudioDock 详细教程
前端·docker·容器
计算机毕设VX:Fegn08951 小时前
计算机毕业设计|基于springboot + vue宠物医院管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
贺今宵1 小时前
安装better-sqlite3报错electron-vite
javascript·sql·sqlite·sqlite3
GIS之路2 小时前
GIS 数据转换:使用 GDAL 将 GeoJSON 转换为 Shp 数据
前端
2501_944446002 小时前
Flutter&OpenHarmony文件夹管理功能实现
android·javascript·flutter
朴shu2 小时前
Luckysheet 远程搜索下拉 控件开发 : 揭秘二开全流程
前端