【发布时间】:2017-11-22 16:28:56
【问题描述】:
我正在编写一个简单的网站,显示来自服务器的对象列表
服务器:index.js
var db = [{ username: 'admin', password: '1234', email: 'admin@gmail.com'}];
app.get('/getListAccount', (req, res)=>{
res.send(db);
})
显示:list.js
import React from 'react';
import {connect} from 'react-redux';
import axios from 'axios';
class Transaction extends React.Component{
render(){
var {listUser} = this.props;
var xhtml = listUser != null ? <p>{listUser.map((e, i)=><p key={i}>{e.username}</p>)}</p>: <p>No user</p>;
return (
<div>
<h1>Transaction</h1>
{xhtml}
</div>
);
}
componentDidMount()
{
var {dispatch} = this.props;
axios.get('/getListAccount')
.then( ({data}) => {
dispatch({
type: 'INIT_LIST',
mang: data
});
})
.catch(err => console.log(err));
}
}
module.exports = connect(function(state){
return {listUser: state.listUser}
})(Transaction);
这是listUser 状态的reducer:
app.js
var listUser = (state = [{username: null, password: null, email: null}],
action) => {
switch(action.type){
case 'INIT_LIST':
{
return {...action.mang};
}
default:
return state;
}
}
但是当我运行它时总是抛出这个错误
listUser.map is not a function。为什么以及如何解决?先感谢您!
【问题讨论】:
-
您得到什么响应(即 componentDidMount 中的数据)?你能检查一下你的网络标签并告诉你吗?
-
map 是 Array 原型上的一个函数。所以最好检查 Array.isArray(listUser),而不是 listUser != null。
-
@AjayGaur 对
getListAccount的响应是[{"username":"admin","password":"1234","email":"admin@gmail.com"}],但它仍然抛出listUser.map is not a function
标签: javascript node.js reactjs redux axios