1

我正在开发一个由react-native@0.55.4and提供支持的应用程序react-native-navigation@1.1.474

最初,只有一个登录屏幕(使用Navigation.startSingleScreenApp)。当用户登录时,我调用Navigation.startTabBasedApp(选项卡组件之一是 my NavScreen)。每当用户更改到另一个选项卡时,应该显示选项卡堆栈的根,所以我尝试了这样的操作:

class NavScreen extends React.PureComponent {
    constructor(props) {
        super(props)
        this.props.navigator.setOnNavigatorEvent(this.toRootOnTabSelect.bind(this))
    }

    toRootOnTabSelect(event) {
        const {id} = event
        if (["bottomTabSelected", "bottomTabReselected"].includes(id)) {
            this.props.navigator.popToRoot({
                animated: true,
                animationType: "fade",
            })
        }
    }

    render() {
        return <Text>Whatever...</Text>
    }
}

但是由于某种原因toRootOnTabSelect,当我更改选项卡时(通过单击它们 - 而不是通过调用switchToTabAPI 方法),我的事件处理程序方法没有被调用。

我在网上找到了多个帖子(即https://stackoverflow.com/a/51159091/6928824https://github.com/wix/react-native-navigation/issues/648)表明它应该这样工作我不知道我错过了什么。:/

任何帮助是极大的赞赏!:)

4

2 回答 2

0

这似乎是一个错误react-native-navigation@^1.1.474(注意插入符号):请参阅我在 GitHub 上的问题

相应的拉取请求已打开但尚未合并。:(

于 2018-09-10T19:58:22.340 回答
0

如果您有一个实现当前侦听器的屏幕包装器组件将无法工作,则可能导致该问题的原因之一是setOnNavigatorEvent与 结合使用。addOnNavigatorEventaddOnNavigatorEvent

文档中所述

setOnNavigatorEvent不能同时使用addOnNavigatorEvent

请记住,您不能同时使用addOnNavigatorEventsetOnNavigatorEventaddOnNavigatorEvent返回一个函数,一旦调用该函数将删除已注册的处理程序。

我建议尝试addOnNavigatorEvent而不是setOnNavigatorEvent

于 2018-07-07T18:19:13.107 回答