【发布时间】:2016-11-16 20:55:56
【问题描述】:
早安,我正在学习 reactjs 并尝试从我使用 expressjs 构建的 api 服务器获取管理列表数据。情况就是这样。
这是我的减速器:
import { FETCH_DATA } from '../actions/types';
const INITIAL_STATE = {};
export default function(state= INITIAL_STATE, action){
switch(action.type){
case FETCH_DATA :
return {...state, payload: action.payload };
default:
return state;
}
}
这是我的动作创建者。
export function getAllAdmin(){
return (dispatch)=>{
axios.get(`${Config.API_URL}/admin`)
.then((response) => {
dispatch({
type: FETCH_DATA,
payload: response.data
});
}
)
.catch(response => {
console.log(response);
});
}
}
这是我的容器
import React, { Component } from 'react';
import { Link } from 'react-router';
import { connect } from 'react-redux';
import * as actions from 'actions/admin_action';
class Admin extends Component{
componentWillMount(){
this.props.getAllAdmin()
}
renderData(){
const admins = this.props.admin;
console.log(admins.payload);
}
render(){
return(
<div>
{this.renderData()}
</div>
)
}
const mapStateToProps = (state) => {
return { admin: state.admin }
}
export default connect(mapStateToProps, actions)(Admin);
在 renderData() 函数中,我执行 console.log(admins.payload) 并显示如下结果。
the result of consoling log(admins.payload)
我确信“未定义”来自第一次渲染的减速器,它移动到默认开关,但我不知道如何解决这个问题。由于未定义,我无法从我的 api 服务器映射结果:(。
问题是如何解决这个问题?我需要你的帮助。谢谢!
【问题讨论】:
-
根据您的导出方式,您可能只需要
connect(mapStateToProps, { getAllAdmin })(Admin) -
我已经完成了 connect(mapStateToProps, { getAllAdmin })(Admin),未定义的仍然出现。 :(
-
请注意
{this.renderData}不会调用该函数。 -
对不起,它实际上是我手动输入到这篇文章的。 @蒂莫
-
显式导入它,例如
import { getAllAdmin } etc.并确保它不是未定义的。
标签: javascript reactjs react-router react-jsx react-redux