Vue3子组件未获取到父组件异步得来的数据

父组件调用接口获得数据,并传给子组件。但是子组件并没有得到父组件调接口后的最新数据,而是初始数据。

原因是父组件异步操作获取数据是在传给子组件值之前,解决方法就是把这个异步数据用ref定义,不用reactive定义。(若父组件用reactive定义时,我在子组件watch监听props无效)

父组件异步操作赋值的时候必须.value赋值。~

【父组件】

//调用子组件 
<UserList :userList="userList"></UserList>

<script lang="ts" setup>
import {ref, reactive} from "vue"
//用ref定义数据,不用reactive定义
let userList = ref<UserList>([{  
  avatarUrl:'',
  signature:'',
  nickname:''
}])


//异步操作赋值
const getFolloweds = (query: { uid:uidType })=>{
  getUserFolloweds(query).then((res:any)=>{
    if(res.code===200){
      userList.value =res.followeds  //注意,这里必须通过.value赋值
    }
  })
}

【子组件】

这下子组件不需要监听,得到的值直接是最新的(实在不行还是可以用watch监听一下)

const props  = defineProps({
  userList: {
    type: Array,
  },
})

猜你喜欢

转载自blog.csdn.net/w1311004532/article/details/128412295
今日推荐