vue3如何爷组件修改孙组件的值 或则赋值 ?试了 provide inject 还是没用
在Vue3中,您可以使用provide/inject来实现父组件修改孙组件的值或赋值。但是,需要注意以下一些问题:
// File: Parent.vue
import { provide, ref } from 'vue';
import Child from '@/components/Child.vue';
export default {
components: { Child },
setup() {
const counter = ref(0);
provide('counter', counter);
return { counter };
}
};
在上面的代码中,我们使用provide将“counter”变量提供给子组件,“counter”是一个ref类型的变量。
// File: Child.vue
import { inject, ref } from 'vue';
export default {
setup() {
const counter = inject('counter');
const numClicks = ref(0);
function handleClick() {
numClicks.value++;
counter.value++;
}
return { numClicks, handleClick, counter };
}
};
在上面的代码中,我们使用inject来获取父组件提供的“counter”计数器变量。我们还定义了一个numClicks变量和一个handleClick函数,用于增加计数器的值。注意,当子组件中的值发生更改时,需要使用“counter.value ++”语句对父组件变量进行更新。
因此,简而言之,您需要确保:
希望这个例子可以帮助您使用Vue3的provide/inject来实现父组件修改孙组件的值或赋值。
不知道你这个问题是否已经解决, 如果还没有解决的话:ref和
$parent / $children` 在跨级通信时是有弊端的。当组件 A 和组件 B 中间隔了数代(甚至不确定具体级别)时,以往会借助 Vuex 这样的解决方案,不得不引入三方库来支持。本节课则介绍一种无依赖的组件通信方法:Vue.js 内置的 provide / inject 接口。