Javascript React JSON API给出的this.state.map不是函数错误

Javascript React JSON API给出的this.state.map不是函数错误,javascript,json,reactjs,api,mapping,Javascript,Json,Reactjs,Api,Mapping,嘿,我一直在想办法解决这个问题有一段时间了,我在这里到处搜索,但什么也没找到 我有一个API,它包含嵌套数组,并通过JSON提供 当我使用console.log时,我能够获得JSON中显示的内容,但是当我尝试映射数组时,我经常会收到错误,指出.map函数存在问题 据我所见,这通常是因为它不适用于字符串,但据我所知,它不适用于字符串 API中有很多数据,但我确信一旦我知道如何只显示一个数据(例如日期),那么我就可以处理其余的数据了 这是密码 export default class App ext

嘿,我一直在想办法解决这个问题有一段时间了,我在这里到处搜索,但什么也没找到

我有一个API,它包含嵌套数组,并通过JSON提供

当我使用console.log时,我能够获得JSON中显示的内容,但是当我尝试映射数组时,我经常会收到错误,指出.map函数存在问题

据我所见,这通常是因为它不适用于字符串,但据我所知,它不适用于字符串

API中有很多数据,但我确信一旦我知道如何只显示一个数据(例如日期),那么我就可以处理其余的数据了

这是密码

export default class App extends React.Component {
constructor() {
    super();

    this.state = {     
        myItem: [] 

    };

}

componentDidMount() {

    this.getItems();
}

getItems () {
    fetch('MYAPIGOESHERE')


        .then(results => results.json())

        //THIS BELOW WORKS
        .then(results => console.log(results.date, results.location));

        //THIS BELOW AND THE RENDER DOES NOT
        .then(myItem => this.setState({myItem}))

}


render() {        
    return (
        <div>
            {this.state.myItem.map (myItem => 
                    <div> {myItem.date} </div> )}
        </div>
    )
})
}
}

尝试将setState用大括号括起来:

    .then(myItem => {
       this.setState({myItem})
    }) 
映射函数与数组一起工作,您似乎只有一个对象。试试这个:

    return (
       <div> {this.state.myItem.date} </div>
    )
返回(
{this.state.myItem.date}
)

并删除映射和左括号之间的空格。

您不能映射到
this.state.myItem
,因为它是一个对象

你可以做:

<div>{this.state.myItem.date}</div>
{this.state.myItem.date}
如果有对象数组,可以执行以下操作:

<div>{this.state.myItems.map(e => <div>{e.date}</div>)}</div>
const { teams } = this.state.myItem;
<div>{teams.map(t => <div>{t}</div>)}</div>
{this.state.myItems.map(e=>{e.date}}
比如说

如果对象中包含数组,则可以执行以下操作:

<div>{this.state.myItems.map(e => <div>{e.date}</div>)}</div>
const { teams } = this.state.myItem;
<div>{teams.map(t => <div>{t}</div>)}</div>
const{teams}=this.state.myItem;
{teams.map(t=>{t}}

您拥有的数据如下所示:对象-->数组-->对象,因此您可以将上述数据组合起来显示所需的数据

您能显示从API返回的数据的形状吗?同样,您的第二个
.then()
没有返回任何要在第三个
.then()
中使用的内容。您是否尝试过:
.then(match=>this.setState({myItem:match}))???@Colin嘿!是的,我知道上面的
.then()
部分很奇怪,我只是展示了我一直在测试的两个部分。当我运行它时,我会对其中一个进行编码。数据的形状是什么意思?比如,API响应是什么样子的?太完美了,谢谢!!但最后一个问题,除了对象的数据数组,我如何执行相同的操作?你是指对象数组吗?是的,我做了你上面添加的,我用
团队
替换了
日期
,团队只保存两个数据,但我一直在获取地图。再次出错,你不是指对象数组,你是说一个有数组的物体。哦,好的,谢谢!我假设我可以将上面数组数据的代码片段与单个对象一起放入return语句中,然后同时呈现date对象和teams数组?