我发出了一个返回简单列表的请求,我正在尝试与表中的此列表进行交互,但是我遇到了以下错误。
未捕获的TypeError:this.state.sistemas.map不是函数 在App.render(App.js:46)
我的组件:
import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
import axios from 'axios';
class App extends Component {
constructor(props) {
super(props)
this.state = { sistemas: [] };
this.handleClick = this.handleClick.bind(this)
}
componentDidMount = () => {
axios.get('http://www.mocky.io/v2/5acaad042e00004d00bbaa07')
.then(function (response) {
this.setState({ sistemas: response.data });
console.log('Response', response.data);
}.bind(this))
}
handleClick = () => {
console.log('Indo buscar dados');
axios.get('http://www.mocky.io/v2/5acaad042e00004d00bbaa07')
.then(function (response) {
this.setState({ sistemas: response.data });
}.bind(this))
}
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Welcome to React</h1>
</header>
<button className='button' onClick={this.handleClick}>
Click Me
</button>
<p className="App-intro">
To get started, edit <code>src/App.js</code> and save to reload.
</p>
<div>
<ul>
{this.state.sistemas.map(sistema =>
<li key={sistema.id}>{sistema.nome}</li>
)}
</ul>
</div>
</div>
);
}
}
export default App;
@edit
我在promise的解析中添加了一个console.log来显示response.data的结果
componentDidMount中的console.log返回:
Response: [
{id: '1', nome: 'Sistema 01'},
{id: '2', nome: 'Sistema 02'},
{id: '3', nome: 'Sistema 03'},
{id: '4', nome: 'Sistema 04'},
{id: '5', nome: 'Sistema 05'},
{id: '6', nome: 'Sistema 06'},
{id: '7', nome: 'Sistema 07'},
{id: '8', nome: 'Sistema 08'},
{id: '9', nome: 'Sistema 09'},
{id: '10', nome: 'Sistema 10'},
{id: '11', nome: 'Sistema 11'},
答案 0 :(得分:2)
检查数据阵列的语法。我认为等号会弄乱数据结构。
您的API,http://www.mocky.io/v2/5acaa5562e00004900bba9f7返回无效的JSON
[
{id = '1', nome = 'Sistema 01'},
{id = '2', nome = 'Sistema 02'},
{id = '3', nome = 'Sistema 03'},
{id = '4', nome = 'Sistema 04'},
{id = '5', nome = 'Sistema 05'},
{id = '6', nome = 'Sistema 06'},
{id = '7', nome = 'Sistema 07'},
{id = '8', nome = 'Sistema 08'},
{id = '9', nome = 'Sistema 09'},
{id = '10', nome = 'Sistema 10'},
{id = '11', nome = 'Sistema 11'},
]
Error: Parse error on line 2:
[ {id = '1', nome = 'Si
------^
Expecting 'STRING', '}'