异步 redux thunk 需要 wrapoer 函数
Asynchronous redux thunk requires wrapoer function
我的 redux thunk 需要一个包装函数。 (我开玩笑的模拟商店不需要它)
Thunk 已作为中间件添加到我的商店中
有效的操作:
export function getSettings (establishmentId: string) {
return (dispatch: any) => {
return () => {
dispatch(settingsLoading())
Client
.getSettings(establishmentId)
.then((settings: ISettings) => {
dispatch(getSettingsSuccess(settings))
})
}
}
}
调度:
dispatch(getSettings(establishmentId))
无效的操作(但在我的玩笑测试中有效):
export function getSettings (establishmentId: string) {
console.log('GET SETTINGS')
return (dispatch: any) => {
dispatch(settingsLoading())
return Client
.getSettings(establishmentId)
.then((settings: ISettings) => {
// dispatch(getSettingsSuccess(settings))
})
}
}
当我在没有包装函数的情况下执行此操作时,它告诉我应该应用 thunk 中间件(我这样做了)
return createStore(
rootReducer,
composeEnhancers(
applyMiddleware(thunk)
)
)
找到答案了,我们在 mapDispatchToProps 中犯了一个错误,使用了 bindActionCreators 的组合,只返回了一个对象列表:
const mapDispatchToProps = (dispatch: any) => bindActionCreators(
{
getSettings: (establishmentId: string) => dispatch(getSettings(establishmentId))
},
dispatch
)
应该是:
const mapDispatchToProps = (dispatch: any) => {
getSettings: (establishmentId: string) => dispatch(getSettings(establishmentId))
}
我的 redux thunk 需要一个包装函数。 (我开玩笑的模拟商店不需要它) Thunk 已作为中间件添加到我的商店中
有效的操作:
export function getSettings (establishmentId: string) {
return (dispatch: any) => {
return () => {
dispatch(settingsLoading())
Client
.getSettings(establishmentId)
.then((settings: ISettings) => {
dispatch(getSettingsSuccess(settings))
})
}
}
}
调度:
dispatch(getSettings(establishmentId))
无效的操作(但在我的玩笑测试中有效):
export function getSettings (establishmentId: string) {
console.log('GET SETTINGS')
return (dispatch: any) => {
dispatch(settingsLoading())
return Client
.getSettings(establishmentId)
.then((settings: ISettings) => {
// dispatch(getSettingsSuccess(settings))
})
}
}
当我在没有包装函数的情况下执行此操作时,它告诉我应该应用 thunk 中间件(我这样做了)
return createStore(
rootReducer,
composeEnhancers(
applyMiddleware(thunk)
)
)
找到答案了,我们在 mapDispatchToProps 中犯了一个错误,使用了 bindActionCreators 的组合,只返回了一个对象列表:
const mapDispatchToProps = (dispatch: any) => bindActionCreators(
{
getSettings: (establishmentId: string) => dispatch(getSettings(establishmentId))
},
dispatch
)
应该是:
const mapDispatchToProps = (dispatch: any) => {
getSettings: (establishmentId: string) => dispatch(getSettings(establishmentId))
}