父组件调用接口获得数据,并传给子组件。但是子组件并没有得到父组件调接口后的最新数据,而是初始数据。
原因是父组件异步操作获取数据是在传给子组件值之前,解决方法就是把这个异步数据用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,
},
})