关于如何得到addressId
相关代码:
const addressId=ref('')
const getAddressList = async () => {
const index=0
try {
const result = await get("api/user/address");
if (result.errno == 0 && result?.data?.length) {
addressId.value = result.data[index]._id
}
} catch (e) {
console.log(e)
}
};
watchEffect(()=>{
getAddressList();
})
这样得到的addressId的结果是正确的。但是,我按如何代码写,为什么就不行呢?
const addressList=ref([])
const getAddressList = async () => {
const index=0
try {
const result = await get("api/user/address");
if (result.errno == 0 && result?.data?.length) {
addressList.value=result.data
}
} catch (e) {
console.log(e)
}
};
watchEffect(()=>{
getAddressList();
})
const addressId=addressList.value[0]._id;
先得到整个接口数据,然后再取它的一个值,这样为什么就不行呢?为什么Console窗口显示 addressList是undefined呢?在渲染页面时不是可以调用这样得到的接口数据吗?是因为需要经过setup函数return后才可以使用吗?
22
收起
正在回答 回答被采纳积分+1
2回答
好帮手慕久久
2021-04-10 16:06:42
同学你好,解答如下:
1、按照第二种写法,控制台能够获取到addressList,不是undefined:


同学再检查一下自己的代码,看哪里不对。
2、由于addressList这个变量使用了ref包裹,所以addressList是一个响应式数据;将其在return中返回后,才能在页面上使用它:



如果想获取第一个数据的id,则可以如下这样写:

3、ref是用来将基础数据转成响应式的,数组不属于基础数据,所以如下写法不合理:

最好如下这样写:


4、如果想直接使用addressId这个变量,最好按照方式1来写。要将addressId设置成一个响应式数据,这样更改它之后,才能映射到页面上:


祝学习愉快!
相似问题
登录后可查看更多问答,登录/注册





恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星