export function updateSchools(subjectId, schoolId, data) {
const { year } = data
return {
type: actionTypes.UPDATE_SCHOOL,
meta: actionTypes.UPDATE_SCHOOL,
payload: http.put(
`api/school/${schoolId}`,
data
).then(data => {
return _getSchools(subjectId, year)
})
}
}
const _getSchools = (subjectId, year) => {
return http.get(`api/school/${subjectId}/subject/${year}`).then(data => {
//some logic
return data
})
}
调用动作updateSchools
函数时,_getSchools
响应中没有返回更新后的值。当页面重新加载时,返回更新的值,甚至在updateSchools
函数调试时,在数据库中更新值。谁能告诉我哪里错了?应用程序中使用了Promise和react-redux。
你在动作中发送的有效载荷是一个Promise。请查看Redux文档
action是一个普通的JavaScript对象
这意味着你不应该在你的动作中发送任何承诺或其他函数。承诺应该在redux操作和reducer之外的其他地方开始和结束。
获取数据的常用方法是通过Redux中间件。举一个中间件的例子——redux-thunk。您完全可以避免使用中间件并自己编写,这取决于您。但是你应该在你的应用中改变一件事——停止在action的有效负载中发送承诺。