当前位置: 首页 > wzjs >正文

站长工具查询入口上海外贸服装尾货市场

站长工具查询入口,上海外贸服装尾货市场,装修123网,注册公司需要多少钱保证金以下是针对 父组件传递对象 子组件修改对象属性 的完整示例代码&#xff0c;同时遵守 Vue3 的单向数据流原则&#xff1a; 1. 父组件代码 (ParentComponent.vue) vue <template><!-- 通过 v-model 传递整个对象 --><ChildComponent v-model"formData&qu…

以下是针对 父组件传递对象 + 子组件修改对象属性 的完整示例代码,同时遵守 Vue3 的单向数据流原则:


1. 父组件代码 (ParentComponent.vue)

vue

<template><!-- 通过 v-model 传递整个对象 --><ChildComponent v-model="formData" /><!-- 显示数据变化 --><div>父组件数据:{{ formData }}</div>
</template><script setup>
import { reactive } from 'vue';
import ChildComponent from './ChildComponent.vue';// 父组件数据(包含多个属性)
const formData = reactive({name: '张三',age: 25,address: {city: '北京',street: '朝阳区'},email: 'zhangsan@example.com'
});
</script>

2. 子组件代码 (ChildComponent.vue)

vue

<template><div><!-- 绑定对象属性 --><el-input v-model="localForm.name" placeholder="姓名" /><el-input v-model="localForm.age" placeholder="年龄" type="number" /><el-input v-model="localForm.address.city" placeholder="城市" /><el-input v-model="localForm.email" placeholder="邮箱" /></div>
</template><script setup>
import { computed } from 'vue';const props = defineProps(['modelValue']);
const emit = defineEmits(['update:modelValue']);// 核心:通过计算属性实现双向绑定
const localForm = computed({get: () => props.modelValue,set: (newValue) => {// 触发更新事件,通知父组件emit('update:modelValue', newValue);}
});
</script>

3. 方案解析

为什么能直接修改对象属性?
  1. 响应式原理:父组件通过 reactive() 创建响应式对象,子组件通过 computed 的 set 方法触发更新。

  2. 数据流安全:虽然看似直接修改了对象属性,但实际上是通过 emit 让父组件更新自己的数据,符合单向数据流。

注意事项
  • 不要直接赋值整个对象

    js

    // ❌ 错误!这会导致失去响应性
    localForm.value = { ...localForm.value, name: '李四' };// ✅ 正确!Vue 会追踪对象内部属性的变化
    localForm.value.name = '李四';
  • 嵌套对象更新:如果修改深层属性(如 address.city),需确保父组件对象是 reactive 创建的。


4. 扩展:使用 defineModel (Vue 3.4+)

如果使用 Vue 3.4+ 的 defineModel,可以进一步简化代码:

vue

<script setup>
// 子组件 (ChildComponent.vue)
const model = defineModel(); // 自动处理 v-model 绑定// 直接修改属性即可(底层自动触发 emit)
const handleChange = () => {model.value.name = '李四';
};
</script>

5. 最终效果

  • 父组件数据会随着子组件的修改自动更新。

  • 所有修改都通过 Vue 的响应式系统追踪,无直接操作 props 的风险。


常见问题解决

Q:为什么修改子组件后父组件数据没变?
  • 确保父组件数据用 reactive 或 ref 创建。

  • 不要解构父组件对象(如 const { name } = formData 会失去响应性)。

Q:如何修改嵌套对象属性?

直接修改即可(得益于 Vue 的响应式系统):

js

// 子组件中
localForm.value.address.city = '上海'; // 自动触发更新

通过这个方案,你可以在保持代码简洁的同时,安全地实现 父子组件间复杂对象的双向绑定


文章转载自:

http://BreL9h3g.nfbkp.cn
http://a8GFwxY5.nfbkp.cn
http://EWEIoeyS.nfbkp.cn
http://yoo8MltN.nfbkp.cn
http://TXXX2ng5.nfbkp.cn
http://jWbCiJ4c.nfbkp.cn
http://zPq4ejwL.nfbkp.cn
http://5W3KMwzJ.nfbkp.cn
http://CmR4rs9A.nfbkp.cn
http://y5JSckNC.nfbkp.cn
http://bBV7UIMM.nfbkp.cn
http://CvN2S8Vc.nfbkp.cn
http://1NXTL4pq.nfbkp.cn
http://rhgChfYd.nfbkp.cn
http://rwEplftH.nfbkp.cn
http://EDdt3IQW.nfbkp.cn
http://AA1NMfzM.nfbkp.cn
http://ZbAjiMCi.nfbkp.cn
http://eaVC5P5j.nfbkp.cn
http://dv34icKx.nfbkp.cn
http://nah6rY6J.nfbkp.cn
http://sENFh07B.nfbkp.cn
http://5j1vsDDF.nfbkp.cn
http://5cvk3Pzw.nfbkp.cn
http://hOWrplgp.nfbkp.cn
http://BnrGqUNp.nfbkp.cn
http://IWj3gyvT.nfbkp.cn
http://mSHqlfWN.nfbkp.cn
http://XupFQA1N.nfbkp.cn
http://upkEvF3m.nfbkp.cn
http://www.dtcms.com/wzjs/719034.html

相关文章:

  • 手怎么搭建网站wordpress做外贸网站的劣势
  • 北京建设网站活动图片绍兴网站建设冯炳良
  • 网站设计术语营销伎巧
  • 品牌网站建设荐选蝌蚪wordpress前后登录
  • 高校建设主流网站河北正规网站建设比较
  • 专业杭州网站建设微信指数
  • 品牌网站 响应式网站欲思 wordpress
  • 怎么用电脑给域名做网站普通网站和门户网站的区别
  • 怎么做app网站ui原型深圳网站设计推荐柚米
  • 做生存分析的网站做网站要先做商标吗
  • 狠狠做新网站广州越秀发布
  • 哪家企业网站做的好wordpress+4.2.1
  • 做外汇 虚拟网站做网站的员工怎么设置绩效考核
  • 湖州高端网站建设公司seo怎么学
  • 自己做网站服务器多少钱梁平集团网站建设
  • 韶关住房和城乡建设网站标准网站是哪个
  • 保定网站建设设计公司企业如何做网站
  • ps怎么做网站首页做网站如何添加表单
  • 哪些网站可以做微信推送手机软件制作网站
  • php做的网站用什么后台江苏国龙翔建设有限公司网站
  • 网站建设销售模式杭州网站关键词优化
  • 网站前台建设需要哪些技术知识怎么自己做模板网站
  • 建外贸网站费用wordpress 手动升级
  • 公司网站设计wordpress异步刷新
  • 网站优化目的php导航网站
  • 做推广网站的去哪能买到有效资料wordpress 代码执行
  • 珠海网站建设哪个平台好制作图片视频的软件
  • 原创网站设计费用手机会员卡管理系统免费版
  • 网站的增加条件设计网站后台更新后主页没有变化
  • wap建站wordpress快报插件