vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > vue  provide和inject

Vue3中provide和inject数据修改规则

作者:BillKu

在Vue3中,通过inject接收到的数据是否可以直接修改,取决于provide提供的值的类型和响应式处理方式,本文给大家介绍Vue3中provide和inject数据修改规则,感兴趣的朋友一起看看吧

在 Vue3 中,通过 inject 接收到的数据是否可以直接修改,取决于 provide 提供的值的类型和响应式处理方式:

1. 若提供的是普通值(非响应式数据)

// 父组件
provide('staticValue', 123);

2. 若提供的是 ref 或 reactive 创建的响应式数据

// 父组件
const count = ref(0);
provide('count', count); // 提供 ref
const state = reactive({ value: 42 });
provide('state', state); // 提供 reactive
// 子组件
const count = inject('count');
count.value++; // 修改 ref 的值,父组件同步更新
const state = inject('state');
state.value = 100; // 修改 reactive 属性,父组件同步更新

3. 若提供的是 readonly 包装的响应式数据

// 父组件
const state = reactive({ value: 42 });
provide('state', readonly(state)); // 提供只读对象

最佳实践建议

// 父组件
const count = ref(0);
const updateCount = (newVal) => { count.value = newVal };
provide('count', { value: readonly(count), updateCount });

总结表

provide 数据类型是否允许直接修改响应式更新生效
普通值(非响应式)❌ 否❌ 否
ref / reactive✅ 是✅ 是
readonly(ref/reactive)❌ 否❌ 否

通过合理选择数据类型和响应式 API,可灵活控制子组件对注入数据的操作权限。

到此这篇关于Vue3中provide和inject数据修改规则的文章就介绍到这了,更多相关vue provide和inject内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文