Node.js results.map不是一个函数
我几乎要将axios响应结果显示到一个表中,但我一直得到错误。仍在学习如何反应。请参见下面的错误 这是为了显示表上的数据 常量{results}=值Node.js results.map不是一个函数,node.js,reactjs,api,axios,Node.js,Reactjs,Api,Axios,我几乎要将axios响应结果显示到一个表中,但我一直得到错误。仍在学习如何反应。请参见下面的错误 这是为了显示表上的数据 常量{results}=值 { results.map(({id, title, description, budget}, index ) => { return ( <tr key={id}> <td>{id}</td>
{ results.map(({id, title, description, budget}, index ) => {
return (
<tr key={id}>
<td>{id}</td>
<td>{title}</td>
<td>{description}</td>
<td>{budget}</td>
</tr>
);
})}
{results.map({id,title,description,budget},index)=>{
返回(
{id}
{title}
{说明}
{预算}
);
})}
我猜这里的问题是,在异步axios调用返回之前,结果
将是未定义的
,因此在渲染组件的最初几次尝试中,它试图在未定义的
上调用.map()
您可以在jsx中添加某种防护,如:
{ results && results.map(...) }
或者首先将您的结果初始化为空数组,解析后重新分配给axios调用的结果。axios发出异步请求:您需要从useEffect挂钩(或componentDidMount)调用它,如下所示:
另一个问题是,您没有检查请求是否已完成,状态是否已更新
{
results &&
results.map(({ id, title, description, budget }, index) => {
return (
<tr key={id}>
<td>{id}</td>
<td>{title}</td>
<td>{description}</td>
<td>{budget}</td>
</tr>
)
})
}
{
结果&&
results.map({id,title,description,budget},index)=>{
返回(
{id}
{title}
{说明}
{预算}
)
})
}
最后,请求必须是一个数组才能使用array.prototype.map()。请包含完整的组件代码,或者更好地使用创建可运行的示例。您是否在控制台中获得日志成功--
输出?第一次渲染时,值是否包含键/属性结果
?欢迎使用StackOverflow!请阅读。仅使用代码的答案可能对OP或该答案的未来观众没有太大帮助。好的答案包括解释为什么这个答案有效以及OP出了什么错
useEffect(() => {
axios.get(`${process.env.REACT_APP_API}/search-projects`).then(res => console.log(res))
})
{
results &&
results.map(({ id, title, description, budget }, index) => {
return (
<tr key={id}>
<td>{id}</td>
<td>{title}</td>
<td>{description}</td>
<td>{budget}</td>
</tr>
)
})
}
const results = [];
if( Array.isArray( response.data ) ){
setValues({...values, results: results});
};