我正在尝试在 redux 操作后导航到上一个屏幕。我正在react-router
使用react-router-redux
和redux-loop
。
这是场景:
- 在主屏幕上有一个用户列表
/home
。 - 点击用户以转到他们的个人资料
/home/profile/1234
。 - 编辑用户名并点击保存
this.props.dispatch(UserState.updateUser(id, user, history)
。 - 用户更新成功后,返回主屏幕
/home
。
这是一些代码:
看法:
saveProfile = () => {
const user = {
name: this.state.name
}
this.props.dispatch(UserState.updateUser(this.state.id, user, this.props.history))
}
行动:
export function updateUser(id, user, history) {
return {
type: UPDATE_USER,
payload: {
id,
user,
history
}
}
}
减速器:
case UPDATE_USER:
return loop(
state.updateIn(['users', action.payload.id], user => user.merge(fromJS(action.payload.user))),
Effects.constant(action.payload.history.goBack())
)
这会导致错误Reducers may not dispatch actions
。
在另一个项目中,我使用redux-saga
并能够成功地将历史对象传递给 saga 和 push/goBack。尝试传递历史对象并在其中调用它似乎发生了一些事情redux-loop
我正在为现有生产应用程序的更新导航系统开发 POC,因此redux-loop
需要使用。
任何提示/帮助将不胜感激。如果我遗漏任何有用的代码,请告诉我。