【发布时间】:2018-02-23 21:11:12
【问题描述】:
这是我的代码:
动作创建者
export function fetchHead() {
const url = HEAD_URL;
const request = axios.get(url);
return {
type: FETCH_HEAD,
payload: request
};
}
减速器
import { FETCH_HEAD } from '../actions';
import _ from 'lodash';
export default function(state = {}, action) {
switch (action.type) {
case FETCH_HEAD:
return _.mapKeys(action.payload.data.articles, 'id');
default:
return state;
}
}
Reducer 键,承诺
import { combineReducers } from 'redux';
import HeadReducer from './head_reducer';
const rootReducer = combineReducers({
heads: HeadReducer
});
export default rootReducer;
组件
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { fetchHead } from '../actions';
class HeadNews extends Component {
componentDidMount() {
this.props.fetchHead();
console.log(this.props.heads);
}
render() {
return <div>Hello</div>;
}
}
function mapStateToProps(state) {
return { heads: state.heads };
}
export default connect(mapStateToProps, { fetchHead })(HeadNews);
【问题讨论】:
-
您缺少网络调用的异步特性,api调用将是异步的,它不会同步返回数据,因此您需要包含一些中间件,如
Redux-thunk,检查这些答案:@987654321 @和How do I return the response from an asynchronous call? -
我认为 redux-promise 会解决这个问题!
标签: reactjs react-router react-redux