axios 这些javascript数组类型有什么不同?[duplicate]

jc3wubiy  于 2022-11-23  发布在  iOS
关注(0)|答案(2)|浏览(123)

此问题在此处已有答案

How do I return the response from an asynchronous call?(44个答案)
21小时前关门了。
enter image description hereenter image description here我认为是相同数组类型,但是,Javascript不会将数据导入到第二个类型'proj_name'中
我使用axios来获取数据
这是我的axios请求tsx文件

import axios,{ AxiosRequestConfig } from 'axios';
import { Projects , Tree } from './PmHomeMenuDataTypes';

const axios_config: AxiosRequestConfig = {
    method: "get",
    baseURL: "http://localhost:8000/",
    url: "service/projects/all",
    responseType: "json",
}

export const getAllProjects = () => {
    const menulist: Tree = [];
    axios(axios_config)
    .then((response) => {
        response.data.map((item: Projects) => {
            menulist.push(item);
        })
    });

    console.log(menulist);

    return menulist;
    
}

我用来获取这个tsx文件数据

import PmHomeTreeComponent from './PmHomeTreeComponent';
import { getAllProjects } from './PmHomeMenuDataGet';

const PmHomeTreeMenu = () => {
    return <PmHomeTreeComponent menuData={getAllProjects()} />
}

export default PmHomeTreeMenu;

我不知道什么是问题

ghhaqwfi

ghhaqwfi1#

这不是数组类型的差异。这是Javascript的异步过程。您返回menulist;在使用Axios时从API响应数组之前完成。
所以我想你可以这样修改你的代码:

export const getAllProjects = () => {
    const menulist: Tree = [];
    return axios(axios_config)
    .then((response) => {
        response.data.map((item: Projects) => {
            menulist.push(item);
        })

        return menulist;
    });
}

我不运行这段代码,但希望这能帮助你解决你的问题。这段代码将返回一个Promise,所以你必须调用.then()函数来获得数组。

3pmvbmvn

3pmvbmvn2#

我解决了这个问题,原因是React-水化-误差
如果您遇到此问题,请尝试使用此文档检测Link

相关问题