Пытаясь отобразить данные в представлении в React Js
, я обнаружил ошибку, которая по-прежнему сохраняется после выполнения шагов руководства:
this.state.users.map не является функцией
Код следующий
import React, {Component} from 'react';
import {render} from 'react-dom';
import request from 'superagent';
class App extends Component{
constructor(){
super();
this.state = {
users: ""
};
}
componentDidMount(){
request.get('http://localhost:8080/api/usuarios')
.end((err, res) => {
const usuariosGet = JSON.parse(res.text).usuarios;
this.setState({
users: usuariosGet
});
});
}
render(){
var mostrarUsuarios = this.state.users.map((usuario, i) => {
return (<li key={i}>{usuario}</li>);
});
return(
<div>
<h1>Hola Mundo React JS</h1>
<ul>
{mostrarUsuarios}
</ul>
</div>
)
}
}
export default App;
Что происходит, так это то, что когда компонент монтируется
users
, это не массив, а строка. Приrender()
первом вызове он попытается выполнить amap
, но поскольку строки не содержат такого метода, произойдет сбой. Решения должно быть достаточно, чтобы изменить ваше объявление в конструкторе:РЕДАКТИРОВАТЬ
Что касается ошибки, которую вы упоминаете в комментарии, это связано с тем, что то, что вы получаете, структурировано следующим образом:
Это массив объектов со свойством
Nombre
. Ошибка в том, что нельзя рендерить объекты просто так, надо выбирать какие-то их свойства:То же самое происходит со мной:
Запрос:
должен быть вызван
users:[]
Или это можно назвать как-то иначе, например.
empresas:[]