数据不会传递给调用函数React Native


你好,我正在尝试从另一个函数调用数据。调用方函数是这样的,

useEffect(() => {
setFetching(true);
const fetchMarketData = async () => {
const marketData = await getMarketData(page);
if (page === 1) {
setData(marketData);
return setFilteredData(marketData);
} else {
setFilteredData(data.concat(marketData));
return setData(data.concat(marketData));
}
};
fetchMarketData();
if (data != undefined) {
if (data.length > 0) setFetching(true);
} else {
}
setFetching(false);
}, [page]);

当我登录marketData时,它返回undefined。但在这些函数中,直到返回,它才会给出正确的结果。

const formatMarketData = (data) =>{
let formattedData = [];
data.forEach(item=>{
const formattedItem = {
...item
}
formattedData.push(formattedItem);
});
return formattedData;
}
export const getMarketData = async (page) =>{
const sending = {"page" : page,};
const response = await fetch("https://us-central1-cnhtest-38661.cloudfunctions.net/getMarketDatas",{
headers: {"Content-Type":"application/json"},
method:"POST",
body:JSON.stringify({data:sending})
}).then((res)=>{
res.json().then((r)=>{
return formatMarketData(r.result.data)
})
})
}

如何将此值正确返回到调用方函数的marketData变量?

您忘记了return第一个内部promise chain。您需要更改

.then((res)=> {
res.json().then((r)=> {
return formatMarketData(r.result.data)
})
})

以下内容。

.then((res)=> {
return res.json().then((r)=> {
return formatMarketData(r.result.data)
})
})

这是一个更新的代码片段。

const formatMarketData = (data) => {
let formattedData = [];
data.forEach(item => {
const formattedItem = {
...item
}
formattedData.push(formattedItem);
});
return formattedData;
}
const getMarketData = async (page) => {
const sending = {"page" : page};
const response = await fetch("https://us-central1-cnhtest-38661.cloudfunctions.net/getMarketDatas", {
headers: {"Content-Type":"application/json"},
method: "POST",
body: JSON.stringify({data:sending})}).then((res)=> {
return res.json().then((r)=>{
return formatMarketData(r.result.data)
})
})
return response
}
async function printResult() {
const result = await getMarketData(1)
console.log(result)
}
printResult()

最新更新