如何处理vue3中的异步数据

ie3xauqp  于 2022-11-17  发布在  Vue.js
关注(0)|答案(1)|浏览(241)

下面是我的index.vue中的代码,在选项api中:

<template>
 <div>{{userData.name}}</div>// 💗'helloworld'
 <div>{{testName}}</div>// ❌'undefined'
</template>
<script>
import {ref} from 'vue'
import axios from 'axios'

export default{
 setup(){
  const userData=ref([])
  const testName = ref('')
  oNmounted(async ()=>{
     const res=await axios({url:'/myProfile',method:'get'})
   })
   userData.value=res.data.data //here I can get the async data after the Internet time travel.

   //in other func to process the `userData` object which would be `[{name:'helloWorld',...}]
   testName.value = userData.name
   cosole.log(userData.name) //output `undefined`, but if i refer it in the template section, it works.
 }
 
 return {
  userData,
  testName,
 }
}

</script>

我想在呈现之前处理异步数据,我如何才能确保我可以获得获取的数据以在<script>部分而不是<template>部分中使用?我定义的userDataref,在异步获取开始时,它被假定为undefined,但在异步axios之后,userData被分配给我想要的最新目标值,那么为什么它们不会相应地更新?我在此实现中遗漏了什么?

92dk7w1h

92dk7w1h1#

您已将userData定义为参照(请参阅)

const userData = ref([])

当您要存取程式码区块内userData的值时,您需要使用.value属性来指向内部值。如果存取是在template标签中,请不要使用.value属性。
因此,正确的行将是:

testName.value = userData.value.name

相关问题