关于vue3中响应式依赖注入provide/inject

关于# vue3中响应式依赖注入

场景:适合单组件(多层嵌套组件),解决父组件的响应式数据能够传递给所有子组件(包括孙子组件及以下)
优点:数据同步更新,并同步渲染视图,耦合逻辑处理更容易处理,更好的开发体验,推荐provide/inject 而非 vuex(繁琐)

// 父组件 script setup
// 创建响应式数据
const parentFormData = ref({
   });
// 依赖数据 - 定义 provide readonly不允许子组件直接修改 parentFormData,以免混乱
provide('parentFormData', readonly(parentFormData));

// 修改依赖变量 parentFormData 的方法
const changeReactivityReadonlyData = (val: any) => {
   
	// 合并对象
	Object.assign(parentFormData.value, val);
};
// 依赖函数
provide('changeParentFormData', changeReactivityReadonlyData);

const formData = reactive<T>({
   
	id: '',
	name: ''
})
// 传递 - 响应式, reactive 需要转一层解构才能保持响应式
changeReactivityReadonlyData({
    ...toRefs(formData) });


// 子组件  script setup
// 定义any 是为了防止 parentFormData.value ts提示,可以研究一下 InjectionKey 的做法
const parentFormData: any = inject('parentFormData');
const changeParentFormData: any = inject('changeParentFormData');
const subFormData = ref<T>({
   
	age: ''
})

// 传递响应式, ref 需要 .value 在转一层, 保持响应式
changeParentFormData(toRefs(formData.value));

相关推荐

  1. 关于vue3响应依赖注入provide/inject

    2023-12-17 09:08:02       60 阅读
  2. Vue3组合-依赖注入provide&&inject

    2023-12-17 09:08:02       46 阅读
  3. Vue3 组合 API:依赖注入(四)

    2023-12-17 09:08:02       27 阅读
  4. Vue 3 响应原理

    2023-12-17 09:08:02       64 阅读
  5. VUE3-响应

    2023-12-17 09:08:02       55 阅读
  6. vue响应原理:依赖追踪

    2023-12-17 09:08:02       69 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-17 09:08:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-17 09:08:02       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-17 09:08:02       82 阅读
  4. Python语言-面向对象

    2023-12-17 09:08:02       91 阅读

热门阅读

  1. Docker可视化管理工具docker.ui的搭建

    2023-12-17 09:08:02       68 阅读
  2. RecyclerView中的设计模式解读

    2023-12-17 09:08:02       64 阅读
  3. linux修复SSL/TLS协议信息泄露漏洞(CVE-2016-2183)

    2023-12-17 09:08:02       66 阅读
  4. 串口通信(5)-C#串口通信数据接收不完整解决方案

    2023-12-17 09:08:02       60 阅读
  5. Kubernetes Pod 网段与主机内网网段互通

    2023-12-17 09:08:02       66 阅读
  6. 基于SpringBoot和微信小程序的校园快递平台系统

    2023-12-17 09:08:02       63 阅读
  7. Ansible运行临时命令

    2023-12-17 09:08:02       62 阅读
  8. Ansible设置主机清单

    2023-12-17 09:08:02       60 阅读