当我执行AJAX请求时,响应缩减器

时间:2016-10-31 15:56:02

标签: javascript reactjs redux

以此为例:

假设这些功能都绑定了所有内容

HalloweenCandyComponent.js

fetchHalloweenCandy() {
  this.props.getHalloweenCandy()
}

actions.js

getHalloweenCandy(){
  return (dispatch) => {  
    const request = axios.get('http://halloweencandy.com/all');
    request.then(function(response){
      console.log(response.data);
      return disatch({
        type: GET_ALL_HALLOWEEN_CANDY,
        payload: response.data
      })
    })
  }
}

此时,当我在console.log(response.data)时,我将返回一个对象数组,我应该这样做。意思是,一切都按预期工作。

接下来,我想要更新 HalloweenCandyComponent 的状态,并用万圣节糖果填充它。因此,我们希望将此信息发送给我们的Reducer。

减速器/ halloweencandy.js

export default function(state = [], action) {
    switch(action.type){
        case GET_ALL_HALLOWEEN_CANDY:
            console.log(action.payload);
            return [...state, 
                Object.assign({}, action.payload)
            ];

        default:
            return state;
    }
}

这是我被扔的地方。 console.log(action.payload)不会返回任何内容。它只是空的。

我似乎无法弄清楚的另一件事是......将价值传递给我的行为。例如......

fetchHalloweenCandyByQuery(search){
  this.props.getHalloweenCandyByQuery(search);
}

然后在我的行动中...它总是以未定义的方式出现......直到很久以后......(我通过执行setTimeOut函数来测试...)但重点是我不想要处理这个问题。我正在使用thunk,我希望这不是问题所在,但我不能这样做,所以当响应准备就绪时,它可以执行,而不是给我未定义的值?!有点像回调?很抱歉,如果这是一个愚蠢的问题,但我尝试查看react-redux-async库和these,但我迷路了。

1 个答案:

答案 0 :(得分:0)

您想知道这个问题是什么。 response.data返回一个对象数组,因此,我无法使用Object.assign()