1、总结了 Vue3的七种组件通信方式,别再说不会组件通信了 本篇文章是全部采用的〈script setup>这种组合式API写法,相对于选项式来说,组合式API这种写法更加自由,具体可以参考Vue文档卬对两种方式的描述。 本篇文章将介绍如下七种组件通信方式: props emit v-model refs provide/inject eventBusvuex/pinia(状态管理工具) 开始搞事情〜举一个栗子 俗话说的好,学习不写demo,那就是耍流氓〜 本篇文章将围绕下面这个demo,如下列图所示: V Ol component-commurwcat X +C ① Io
2、calho$t8080
JavaScriptHTML
CSS请输入
上图中,一列表.和.输入框一分别是父子组件,根据不同传值方式,可能谁是父组件谁是子组件会有所 调整。
Props方式Props方式是Vue中最常见的一种父传子的一种方式,使用也比拟简单。
根据上面的demo,我们将数据以及对数据的操作定义在父组件,子组件仅做列表的一个渲染;父组件代码如下:
|| 3、ss="input・group・ap而后| < /1 e m p 1 a
|emit方式
emit方式也是Vue中最常见的组件通信方式,该方式用于子传父;根据上面的demo,我们将列表定义在父组件,子组件只需要传递添加的值即可。
子组件代码如下:
7、d.讥后|const handleAdd =
| list. value . push (|< / s c r i p t
在父组件中只需要监听子组件自定义的事件,然后执行对应的添加操作。
v-model 方式v-model是Vue中一个比拟出色的语法糖,就比方下面这段代码
| 8、面那个demo,如何用v-model实现。
子组件|
9、defineProps } from 'vue const props = defineProps({
type: Arra
default: () => 口,const emits = defineEmits([1 update:list1])
//添加操彳const handleAdd =()=>{
const arr = props ,list| arr.push(value.value),
emits('update:list' am
value.value ='
在子组件中我们首先定义props和emits,然后添加完成之后emit指定事件。
注 10、update:*是Vue中的固定写法,*表示props中的某个属性名。 父组件中使用就比拟简单,代码如下:
|< template| 12、ate>
子组件代码如下: