首页 > 其他分享 >[Vue] useVModel

[Vue] useVModel

时间:2024-08-25 19:47:38浏览次数:8  
标签:Vue return get child component propName props useVModel

One way data binding, the parent component pasing data through v-modelto child component, if child modify the data, v-modelwill take care emit the changed back to parent component. This partten works fine.

But there might be some problem, for example, what if inside child component, it also use v-modelbind to a form input component, when form input change the data, it only mutate child component, but parent component won't get updated.

That's been said we shouldn't use v-modleinside child component in this case, we need to use :modelValue@update:modelValuecombined.

const cacheMap = new WeakMap()

export function useVModel(props, propName, emit) {
    return computed({
       get() {
           if (cacheMap.has(props[propName])) {
               return cacheMap.has(props[propName])
           }
           const proxy = new Proxy(props[propName], {
              get(target, key) {
                   return Reflect.get(target, key)
              },
              set(target, key, value) {
                 emit(`update:${propName}`, {
                     ...target,
                     [key]: value
                 })
                 return true
              }
           })
           cacheMap.set(props[propName], proxy);
           return proxy
       },
       set(val) {
           emit(`update:modelValue`, val)
       }
    })
}

 

标签:Vue,return,get,child,component,propName,props,useVModel
From: https://www.cnblogs.com/Answer1215/p/18379410

相关文章

  • 基于Springboot+Vue的铁路订票管理系统(含源码数据库)
    1.开发环境开发系统:Windows10/11架构模式:MVC/前后端分离JDK版本:JavaJDK1.8开发工具:IDEA数据库版本:mysql5.7或8.0数据库可视化工具:navicat服务器:SpringBoot自带apachetomcat主要技术:Java,Springboot,mybatis,mysql,vue2.视频演示地址3.功能这个系......
  • Vue3项目开发——新闻发布管理系统(三)
    文章目录七、登录&注册页面设计开发1、安装、导入`ElementPlus`组件库1.1安装1.2引用1.3设置中文1.4使用七、登录&注册页面设计开发网页页面设计肯定离不开表单、输入框、按钮等等控件的布局、样式等等的设计。在新闻发布管理系统中,使用ElementPlus......
  • idea控制vue项目启动(前后端分离中的前端)(自用
    EditControl…… npm 选中vue的package.json(后端注意设置端口为8080之外的) scripts选serve 启动时不要使用debug模式 ......
  • [vue3] vue3 setup函数
    从语法上看,CompositionAPI提供了一个setup启动函数作为逻辑组织的入口,提供了响应式API,提供了生命周期函数以及依赖注入的接口,通过调用函数来声明一个组件。OptionsAPI选项式API在props、data、methods、computed等选项中定义变量;在组件初始化阶段,Vue.js内部处理这......
  • 基于django+vue摄影网站的设计与实现【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和普及,数字化摄影已成为大众生活的一部分,摄影作品的传播与分享方式也发生了深刻变革。传统的摄影展示与交易方式......
  • 基于django+vue摄影爱好者交流平台【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着数字技术的飞速发展,摄影艺术已不再是专业摄影师的专属领地,越来越多的普通民众也加入了摄影爱好者的行列。他们热衷于捕捉生活中的美好......
  • 基于django+vue社团管理系统【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育的普及和学生自主性的增强,校园社团作为培养学生综合素质、促进文化交流的重要平台,其数量与种类日益增多。然而,传统的手工管理......
  • 基于Node.js+vue四川省非物质文化遗产之传统美术数字平台设计与实现(程序+论文+开题报
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在全球化与现代化的浪潮中,非物质文化遗产作为民族文化的瑰宝,正面临着传承与保护的严峻挑战。四川省,作为中华文化的重要发源地之一,拥有丰富的非物质文化遗产......
  • 使用Vue3实现响应式表单验证
    使用Vue3实现响应式表单验证在现代Web开发中,用户交互的体验一直是开发者关注的重点之一,其中,表单验证是提升用户体验的重要环节之一。借助Vue3的强大特性,我们可以轻松地实现一个响应式的表单验证系统。本文将逐步引导你如何使用Vue3的CompositionAPI(setup语法糖)来构建一......
  • Vue3 + Vue Router实现动态路由导航
    Vue3+VueRouter实现动态路由导航随着单页面应用程序(SPA)的日益流行,前端开发逐渐向复杂且交互性强的方向发展。在这个过程中,Vue.js及其生态圈的工具(如VueRouter)为我们提供了强大的支持。本文将介绍如何在Vue3中使用VueRouter实现动态路由导航,帮助你增强应用的灵活......