import React from "react";
import ReactDOM from "react-dom";
import { createRoot } from 'react-dom/client';
import axios from "axios";
const BASEURL = "https://jsonplaceholder.typicode.com/users";
function axiosTest() {
return axios.get(BASEURL).then(response => response.data)
}
function stepTwo(){
axiosTest()
.then(data =>{
var namesArray = data;
//console.log(namesArray);
return namesArray;
})
}
function Component1(){
var array2map = stepTwo();
console.log(array2map);
return(
<div>
{array2map.map(item => <p>item.name</p>)}
</div>
)
}
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<Component1 />);
为什么array2map返回为undefined?这是它在控制台日志中说的,也是它在我试图Map未定义的东西时得到的错误中说的。这是我的问题,我不知道我还能再详细描述它多少,但这个站点迫使我写更多。
2条答案
按热度按时间z9ju0rcb1#
因为您没有从stepTwo函数返回任何内容。
wgxvkvu92#
在此应注意两点:
首先,
stepTwo
不返回任何内容,它包含的return
语句用于then
回调。回调在stepTwo
返回undefined
之后**运行。第二,函数组件顶层的任何东西,比如
var array2Map = stepTwo()
,都是在组件挂载之前运行的,而fetch
调用比如axios
,应该在组件挂载之后进行。这里有一个解决方案。
重要建议:命名在编程中是非常重要的。给你的变量、方法和组件给予个合适的名字。
stepTwo
不做任何事情,而axiosTest
已经做了。后者可以直接使用。我猜你的axios调用会返回一个名称列表。在这种情况下,你可以使用names
代替array2Map
。