vue3中,一个对象可以渲染,对象的属性却不可以渲染?

新手上路,请多包涵

我从后端请求回一个数据,是一个数组,其中包含若干对象,我把它赋值给data,然后在模板里进行渲染,data【0】是可以正常渲染的,但是data【0】里的属性值却渲染不出来,好奇怪,而且我也做过类型检测,data【0】的的确确是一个对象,就是访问不了属性,这是为什么,求解答,困扰两天了!!

<template>
    <div>
        <div>测试</div>
        <div>{{ data[0] }}</div>
    </div>
    <button>切换</button>
</template>
  
<script>
import { reactive, ref, onMounted,computed } from "vue";
import axios from 'axios'

export default ({
    setup() {
        var data = ref([])
        onMounted(async () => {
            const resdata = await axios.get('/api/dynastypoets?name=唐代')
            console.log(resdata.data[0])
            console.log('onmount触发')
            data.value=resdata.data[0]
            console.log(data.value)
            console.log(data.value[0])
        })
        return { data };
    }
    
});
</script>
  
<style scoped></style>

<template>
    <div>
        <div>测试</div>
        <div>{{ data[0].dname }}</div>
    </div>
    <button>切换</button>
</template>
  
<script>
import { reactive, ref, onMounted,computed } from "vue";
import axios from 'axios'

export default ({
    setup() {
        var data = ref([])
        onMounted(async () => {
            const resdata = await axios.get('/api/dynastypoets?name=唐代')
            console.log(resdata.data[0])
            console.log('onmount触发')
            data.value=resdata.data[0]
            console.log(data.value)
            console.log(data.value[0])
        })
        return { data };
    }
    
});
</script>

阅读 2k
1 个回答

页面渲染是不会等你数据加载的,在你的数据返回之前,data[0] = undefined,所以会报错。
可以改成

<div v-if="data.length">
    <div>测试</div>
    <div>{{ data[0].dname }}</div>
</div>

或者

<div>
    <div>测试</div>
    <div>{{ data[0] && data[0].dname }}</div>
</div>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题