Reducer使用axios发送请求返回响应对象失败

时间:2017-06-10 12:14:42

标签: reactjs react-redux axios

const requestUserInfo = (state = {}, action) => {
	switch(action.type) {
		case 'HEADER_GET_USERINFO':
			axios.post('/user/getScores', qs.stringify({
				token: token,
				uid: uid
			}))
			.then(res => {
				if(res.data.status !== 200) {
					message.error(res.data.message)
					return state
				}

				return { ...res.data.attachment, ...state }
			})
			break
		default :
			return state
	}
}
// error
Uncaught Error: Given action "HEADER_GET_USERINFO", reducer "requestUserInfo" returned undefined. To ignore an action, you must explicitly return the previous state.

1 个答案:

答案 0 :(得分:0)

你应该避免减压器内的副作用!

正如Redux官方教程中提到的那样:

  

你应该在减速机内做的事情:

     
      
  1. 改变其论点
  2.   
  3. 执行API调用和路由转换等副作用
  4.   
  5. 调用非纯函数,例如Date.now()或Math.random()。
  6.   

您应该使用Async actions代替,它将执行API调用,并且至少可能会调度应该处理传入数据的操作。