如何在使用 redux 分派操作后导航到另一个屏幕
How to navigate to another screen after dispatch an action using redux
通过 API 调度创建新对象的操作后,它 returns 它在 mapStateToProps
上。
在 componentDidUpdate
回调中,我能够将对象映射到道具并打开传递它的详细信息屏幕。问题是,当我返回并尝试创建一个新对象(只需填写表格)时,它会不断调用 componentDidUpdate 使用最近在 props 中创建的对象(因为我正在使用用户键入的内容设置状态并且 this.props.deck
还在里面。
是否有另一个生命周期,我无法在 props 或其他逻辑中得到任何垃圾?
我的调度操作:
this.props.createDeck(deckToBeCreated) // dispatch an action to create a deck
我的部分减速器:
case ADD_NEW_DECK_SUCCESS:
return {
...state,
deck: action.deck,
}
如果成功,我将在此处获得 API 创建的牌组对象:
function mapStateToProps({specificDeckReducer}) {
return {
deck: specificDeckReducer.deck
}
}
componentDidUpdate() { // THE PROBLEM IS HERE.
const { deck } = this.props
if (deck != null && deck.id) {
this.showDeckDetail(deck)
this.reset()
}
}
您可以设置 componentDidUpdate()
使其仅在您获得更新的 prop 时运行。
componentDidUpdate(prevProps){
if(prevProps.deck !== this.props.deck){
//do something
}
}
这样生命周期事件就不会一直触发。所以你应该能够自由导航而不用担心组件事件。
通过 API 调度创建新对象的操作后,它 returns 它在 mapStateToProps
上。
在 componentDidUpdate
回调中,我能够将对象映射到道具并打开传递它的详细信息屏幕。问题是,当我返回并尝试创建一个新对象(只需填写表格)时,它会不断调用 componentDidUpdate 使用最近在 props 中创建的对象(因为我正在使用用户键入的内容设置状态并且 this.props.deck
还在里面。
是否有另一个生命周期,我无法在 props 或其他逻辑中得到任何垃圾?
我的调度操作:
this.props.createDeck(deckToBeCreated) // dispatch an action to create a deck
我的部分减速器:
case ADD_NEW_DECK_SUCCESS:
return {
...state,
deck: action.deck,
}
如果成功,我将在此处获得 API 创建的牌组对象:
function mapStateToProps({specificDeckReducer}) {
return {
deck: specificDeckReducer.deck
}
}
componentDidUpdate() { // THE PROBLEM IS HERE.
const { deck } = this.props
if (deck != null && deck.id) {
this.showDeckDetail(deck)
this.reset()
}
}
您可以设置 componentDidUpdate()
使其仅在您获得更新的 prop 时运行。
componentDidUpdate(prevProps){
if(prevProps.deck !== this.props.deck){
//do something
}
}
这样生命周期事件就不会一直触发。所以你应该能够自由导航而不用担心组件事件。