vue3组件常用的通信方式(父传子、子传父、父直接获取子、pinia)
在Vue 3中,常用的组件通信方式包括:
- 父传子:通过props传递数据。
- 子传父:通过自定义事件(
$emit
)传递数据。 - 父直接获取子:使用
ref
。 - Pinia:状态管理库,用于管理全局状态。
示例代码:
<!-- 父组件 -->
<template>
<ChildComponent :parentData="parentData" @childEvent="handleChildEvent" />
</template>
<script setup>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';
const parentData = ref('父组件数据');
const handleChildEvent = (data) => {
console.log('子组件触发的事件:', data);
};
</script>
<!-- 子组件 -->
<template>
<button @click="sendToParent">发送给父组件</button>
</template>
<script setup>
import { defineProps, defineEmits } from 'vue';
const props = defineProps(['parentData']);
const emit = defineEmits(['childEvent']);
const sendToParent = () => {
emit('childEvent', '子组件数据');
};
</script>
<!-- 使用Pinia -->
<script setup>
import { useStore } from './store';
const store = useStore();
// 设置状态
store.setSomeState('new value');
// 获取状态
console.log(store.someState);
</script>
在Pinia的示例中,假设你有一个名为store.js
的Pinia store,它包含一个状态someState
和对应的设置方法setSomeState
。
评论已关闭