javascript - 使用 react-redux 为一个简单的动作创建者返回一个承诺
问题描述
我是 react-redux 的新手。在这里,我认为这是一个非常基本的问题。但是,我有一个动作创建者,我正在使用一个 redux thunk。
export const updateActivePage = (activePage) => {
return {
type: UPDATE_ACTIVEPAGE,
payload: activePage
}
}
我尝试的是
export const updateActivePage = (activePage) => (dispatch) => {
return new Promise( function(resolve, reject) {
dispatch({
type: UPDATE_ACTIVEPAGE,
payload: activePage
})
})
}
之后的函数没有被调用。
现在,在我componentdidmount
想 .then
在这之后使用
所以,为此我想回报一个承诺。那么,我该怎么做呢?我正在使用reux-thunk
解决方案
当您想从外部源(如 REST)获取一些数据时,会使用 Promise。但是,如果您真的想这样做,动作创建者必须返回一个函数:
export const updateActivePage = (activePage) => {
return (dispatch) => {
return dispatch ({
type: UPDATE_ACTIVEPAGE,
payload: activePage
});
}
}
像这样的东西应该返回承诺。然而,这个承诺将在动作被派发时被解决。它与 redux 状态更改不同。我认为您并不想在这里使用承诺。
如果你想在 redux 状态发生变化时做出反应,你的组件应该观察状态(使用 mapStateToProps)并且你可以处理componentWillUpdate
方法的变化。
推荐阅读
- node.js - TypeScript 不会编译 mp3 音频文件
- javascript - 如何在不使用 JavaScript 中的内置 sort() 和 atoi 方法的情况下对字符串数据类型的数组进行排序
- python - 一旦设置了两个带有 QStyledItemDelegate 的验证器,QtableView 就会崩溃
- python - 打 docker 时:(56) Recv failure: Connection reset by peer
- python - 如何将我的推算数据与我的原始数据框合并?
- python - 一个人在Django中预订后,如何使时间段(特定日期和时间)不出现?
- laravel - 如何使用 Laravel 和 Vue 将数据从子组件传递到父组件
- reactjs - 解析错误:“--jsx”选项的参数必须是:“preserve”、“react-native”、“react”
- laravel - 检索已发送电子邮件的附件名称和内容
- python - 是否可以将整数添加到由两个整数组成的列表中?(不是第三个变量)