vue3组件传值 reactive赋值响应式失效问题

问题

在进行父子组件传值或者在当前使用reactive()重新给属性赋值的时候会发现数据在页面中不是响应式了。

解决方法

因为重新赋值已经改变了原有的内存指向地址,变成了普通的对象解决方法如下:
可定义对象添加一个属性来管理你所需要变动的值

父组件

app.vue

<template>
	 <h3>这是父组件</h3>
	<child title="标题" :data="data"></child>
	 <button @click="fatherBtn()">点击改变父组件传值</button>
</template>
<script setup lang="ts">
	import { reactive } from 'vue'
	import Child from './components/child.vue'
	// 这种会失去响应式
	// let data = reactive({
	// 		name:'张三',
	// 		age:66
	// 	})
	// 	const fatherBtn = ()=>{
	// 		data = {name:'李四',age:100}
	// 	}

	// 修改后
	let data = reactive({
		data:{
			name:'张三',
			age:66
		}
	})
	const fatherBtn = ()=>{
	 	data.data = {name:'李四',age:100}
	 }
</script>

子组件

<template>
  <div>这是子组件</div>
  <div>
    这是父组件的传值+++{{props.title}}
  </div>
  <div>
    这是父组件的传值2+++{{props.data}}
  </div>
  <button @click="btn">查看传值</button>
</template>
<script lang="ts" setup>
import { computed } from 'vue';
const props = defineProps<{
  title: string
  data: object
}>()
function btn(){
  console.log(props.data.data)
}
</script>
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值