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

vue3父子组件传对象,子组件访问修改父组件对象中的属性值

父组件:

<template>
  <CustomInput v-model="message.person" /> {{ message}}
</template>

<script>
import CustomInput from './CustomInput.vue'

export default {
  components: { CustomInput },
  data() {
    return {
      message: {name:'',person:{username:'zhangsan',userid:'1234'}}
    }
  }
}
</script>

子组件:

<template>
  <input :value="modelValue.username" @change="handleChange" />
  <input :value="modelValue.userid" @change="handleChange1" />
</template>

<script>
export default {  
  props: ['modelValue'],  
  emit: ['update:modelValue'],  
  setup(props,{emit}) {  
   const handleChange = (event) => {  
      emit('update:modelValue', { ...props.modelValue, username: event.target.value});  
    }
    const handleChange1 = (event) => {  
      emit('update:modelValue', { ...props.modelValue, userid: event.target.value});  
    }
    return { handleChange ,handleChange1 }   
  }  
}  
</script>

如使用element-plus写法如下:
<template>
  <el-input v-model="modelValue.username" @change="handleChange"/>
  <el-input v-model="modelValue.userid" @change="handleChange1"/>
</template>

<script>
export default {  
  props: ['modelValue'],  
  emit: ['update:modelValue'],  
  setup(props,{emit}) {  
   const handleChange = (event) => {  
      emit('update:modelValue', { ...props.modelValue, username: event});  
    }
    const handleChange1 = (event) => {  
      emit('update:modelValue', { ...props.modelValue, userid: event});  
    }
    return { handleChange ,handleChange1 }   
  }  
}  
</script>

在实际运用中不需要这么复杂,父组件不变,子组件如下

<template>
  <el-input v-model="modelValue.username" @change="handleChange"/>
  <el-input v-model="modelValue.userid" @change="handleChange1"/>
</template>

<script>
export default {  
  props: ['modelValue'],  
  emit: ['update:modelValue'],  
  setup(props) {  
   const handleChange = (event) => {  
     //具体逻辑 例如:修改父组件username的值
     props.modelValue.person.username = 'lisi'
     props.modelValue.person.username = props.modelValue.person.username.slice(0,2)
    }
    const handleChange1 = (event) => {  
      //具体逻辑
    }
    return { handleChange ,handleChange1 }   
  }  
}  
</script>
http://www.dtcms.com/a/1334.html

相关文章:

  • 第13节-PhotoShop基础课程-裁剪工具
  • MySQL 面试题——MySQL 基础
  • VBA技术资料MF57:VBA_自动创建PowerPoint演示文稿
  • 无涯教程-JavaScript - OFFSET函数
  • Hadoop-Hbase
  • [npm] npx 介绍与使用说明
  • 什么是同步容器和并发容器的实现?
  • 与导师沟通2023-09-14
  • 数据库表的基本操作
  • nowcoder NC30 缺失的第一个正整数
  • 学习python和anaconda的经验
  • c语言输出杨辉三角
  • 安卓恶意应用识别(三)(批量反编译与属性值提取)
  • C【数组】
  • 中国IT分销行业市场研究与投资战略报告(2023版)
  • Android 原生内置应用配置
  • 数据分析三剑客之Pandas
  • 网络安全宣传周|探索AI数字人的魅力和价值所在
  • Windows驱动开发(一)第一个驱动程序
  • 企业电子招标采购系统源码Spring Boot + Mybatis + Redis + Layui + 前后端分离 构建企业电子招采平台之立项流程图
  • 【新版】软考 - 系统架构设计师(总结笔记)
  • useGetState自定义hooks解决useState 异步回调获取不到最新值
  • 阿里云大数据实战记录10:Hive 兼容模式的坑
  • C2基础设施威胁情报对抗策略
  • linux mysql数据库备份
  • SpringCloudGateway网关实战(三)
  • Datagrip 下载、安装教程,详细图文,亲测有效
  • IDEA(2023)修改默认缓存目录
  • 【Effective Python】读书笔记-05类与接口
  • 【送书活动】大模型赛道如何实现华丽的弯道超车