axios 通过从数据库中提取列表项目来填充物料UI列表,输出空列表

gt0wga4j  于 2022-11-05  发布在  iOS
关注(0)|答案(1)|浏览(760)

我想调用数据库API来获取有关用户public_address(元掩码)、first_name和last_name的信息。
一旦我有了这些数据(我调用了一个API),我就可以在列表中使用Map函数,然后为列表中的每个元素生成ListButtonItems。
"我所做的一切"
我的API调用工作得很好,但问题是我的结果数组没有填充,例如,当我检索我的响应(响应成功地从API中提取)时,我将响应中的所有内容添加到一个数组变量中,但该数组总是显示为空(我认为这是由于axios的异步特性)

代码

import {Box, Button, Grid, List, ListItem, ListItemButton, ListItemText} from "@mui/material"
import {useEffect} from "react";
import axios from "axios";

 function RequestApproval() {

    let resultArray = [];

    const result =  axios.get("http://localhost:3001/all-user-addresses").then((response) => {
     resultArray.concat(response.data.result);

    })

     const listItems = resultArray.map((items) => <ListItemButton component="a" onClick={() => alert("Clicked")}>
         <ListItemText primary={items.first_name}/>
     </ListItemButton>)

     console.log(resultArray) //This appears as empty

    return (
        <div style={{display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100vh'}}>
            <Box style={{borderRadius: '16px', backgroundColor: '#6ea6be'}}>
                <List sx={{width: '600px', maxWidth: '1000px'}}>
                    {listItems}
                </List>
            </Box>
        </div>

    );
}

export default RequestApproval;
j9per5c4

j9per5c41#

将函数定义为async function RequestApproval(),等待get request -〉const result = await axios.get(...)....console.log(www.example.com)的响应response.data,看看得到了什么。

相关问题