我需要能够从不一定是屏幕组件的模块导航和重置导航堆栈。这意味着,我不能使用:
const {navigate} = this.props.navigation;
在我的情况下,当他点击推送通知时,我需要正确地将用户重定向到正确的屏幕。我只有一个回调:
onNotification: function(notification) {
// show correct screen and reset navigation stack
}
我只需要更灵活的导航。那我怎么能为我的情况做呢?
答案 0 :(得分:3)
这是我的解决方案。我为所有屏幕实现了基类。有了这个,我总是知道我在哪个屏幕,并且总是可以获得导航对象,以便在需要时重定向用户:
import React, {Component} from 'react';
export default class Base extends Component {
static screen;
constructor(props) {
super(props);
Base.screen = this;
}
nav() {
return this.props.navigation;
}
}
在其他一些组件/模块中,我可以调用它来导航到另一个屏幕:
Base.screen.nav().navigate(...);
答案 1 :(得分:1)
我已经创建了一个导航识别屏幕组件,可以在屏幕上进行处理。
对于屏幕外部,您可以直接访问store.navigation。我在我的例子中使用了redux。看看这对你有帮助。