Vue3中ref()接收后端传来的值,页面渲染出错Cannot read properties of undefined

省流版:ref(0)中放0占位,就可以解决了

正文

具体问题代码如下

<template>
    <div>
		<h2>{{userInfo.uid}}</h2>
	</div>
</template>

//setup中定义一个接收的变量
const userInfo = ref();

//通过axios请求后端数据赋值给userInfo
getUserInfo().then(res => {
    userInfo.value = res.data
})

//后面需要将userInfo return出去才能在template中使用

结果控制台报错如下

把h2的那段代码去掉,控制台打印出userInfo的结果是有uid的值

因为在另外几个组件也是这样的写法,但是却能正常的渲染出来,在网上找了很久也没有解决这个问题,然后我又试了一下以下这样的写法。

<div v-for="(item,index) in userInfo">
	<h2>{{userInfo.uid}}</h2>
</div>

结果能渲染了,但却是。。

 对比了其他组件的写法发现,别的组件没出错的原因是后端传回的数据是array类型的,而上述出错的数据是object类型的。

解决办法:在ref()里面放个0占位就可以了(放null和undefind都不行----emmm具体什么原因我也不太懂,新手一枚,欢迎各位大佬指正!)

const userInfo = ref(0);

 


版权声明:本文为weixin_52378924原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。