Vue组件间通信方式有哪些?
props/$emit
父组件向子组件传值
子组件向父组件传值通过事件形式,实际上就是子组件把数据发送到父组件
vuex
Vuex实现了单向数据流,在全局使用State存放数据,当组件需要修改数据时,需要通过Mutation进行操作,mutation同时提供了订阅者模式供外部插件获取State数据的更新,而异步操作或批量的同步操作都需要通过Action来间接修改数据,但Action也是要走Mutation来更新数据,最后根据State的变化渲染到视图上
$attrs/$listeners
$attrs:包含了父组件中所有不被prop识别的属性绑定,当一个组件没有声明任何prop时,这里会包含所有父组件的绑定,并可以通过v-bind=”$attrs”传入内部组件,通常和interitAttrs一起使用(简单说就是$attrs里存放的是父组件没有绑定props的属性)
$listeners:包含了父作用域的事件监听器,可以通过v-on=”$listeners”传入内部组件(父组件中绑定的非原生事件)
provide/inject
祖先组件通过provide提供变量,子孙组件通过inject注入变量,但两者的绑定不是响应式的,祖先组件的值变化,子孙组件的值不会变化
$parent/$children/ref
Ref:如果在普通的dom元素上使用就是指向dom元素,如果在组件中使用就是指向组件实例
$parent/$children:访问父/子实例,这就意味着可以访问组件上的所有属性和方法
弊端是无法跨级和兄弟间通信
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用