我正在使用React本机导航,并将同一屏幕不断推到堆栈导航器上。屏幕加载时,它将使用来自mobx-state-tree存储的信息来决定如何渲染。在将另一个副本推入堆栈之前,需要更新存储中确定如何渲染屏幕的信息,以便新屏幕知道在加载时如何渲染。问题在于,在更新商店和将新副本推送到堆栈之间的短时间内,当前屏幕会更新为下一个副本准备的信息,并在导航前崩溃。无论如何,有没有避免当前屏幕更新为下一屏幕准备的信息?也许我可以在生命周期中的其他地方更新商店,或者停止当前屏幕暂时观察商店?
menuItemPressed = () => {
this.props.saleDemoStore.pushPageStack(this.props.menuItem.pointerType, this.props.menuItem.navPointer)
if (this.props.menuItem.pointerType == "Menu") {
this.props.navigation.push("menu")
} else if (this.props.menuItem.pointerType == "Form") {
this.props.navigation.push("form")
}
}
在上面的代码中,您可以看到商店在下一个屏幕上得到更新,然后应该进行导航。但是,在函数的第一行之后,该应用程序崩溃,因为在瞬间观察到商店中的新数据时,屏幕会用错误的数据更新。