react 与promise和ajax,REACT如何使用Redux和Axios(使用promise中间件)发出AJAX请求?...

我有这个动作创作者:

export function getLevelsMap() {

const request = axios.get(`/api/levels`);

return {

type: GET_LEVELS_MAP,

payload: request

}

}

和这个减速机

import { GET_LEVELS_MAP } from '../actions';

export default function (state = null, action) {

switch (action.type) {

case GET_LEVELS_MAP:

return action.payload.levels;

default:

return state;

}

}

AJAX请求应该返回给我:

{

"levels": [

{

"_id": "5951b7f0600af549fb1d269a",

"name": "College",

"__v": 0,

"subjects": [

{

"_id": "594891db1dbdf635ca3019ab",

"name": "Maths",

"__v": 0

},

{

"_id": "5948920d1dbdf635ca3019ac",

"name": "Biology",

"__v": 0

}

...

请求确实有效(我用PostMan测试过)

现在,我将我的组件与reducer和action连接:

function mapStateToProps(state) {

return {

levels: state.levels

}

};

export default connect(mapStateToProps, { getLevelsMap })(ChooseSubject);

我在componentDidMount方法中获取数据(调用操作):

componentDidMount() {

if (!this.props.levels) {

this.props.getLevelsMap();

}

}

并尝试使用reducer:

getSubjects(level) {

let levels = this.props.levels;

if (levels) {

for (var item of levels) {

if (item.name === level) {

return item;

}

}

}

return null;

}

这是我说我正在使用promise中间件的地方

const createStoreWithMiddleware = applyMiddleware(promise)(createStore);

ReactDOM.render(

, document.querySelector('.root'));

但是,this.props.levels是未定义的... PS:如果我硬编码(复制粘贴我在subject_reducer中从postMan获得的结果)来自AJAX请求的答案,一切都有效 .

非常感谢您的非常感谢帮助:)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值