2

在我的反应原生应用程序中,我将反应导航 3 升级为反应导航 5。但是在升级后,当我运行应用程序时,每当我进行任何类型的导航时,我总是会多次收到此警告:

Accessing child navigation state for a route is not safe and won't work correctly

警告

例如,我使用this.props.navigation.push以下代码中的命令在 StackNavigator 的屏幕之间导航:

<Screen header={<Header
                centerComponent={
                    <CustomText style={{ color: colors.primaryText, marginLeft: 15, marginRight: 15 }}>
                        {shop && shop.name}
                    </CustomText>
                }
                leftComponent={
                    <HeaderIcon
                        onPress={() => this.props.navigation.push("SelectShop", { pop: true })}
                        type="material-community"
                        name="store" />
                }
                rightComponent={
                    <HeaderIcon
                        onPress={() => this.props.setProductLayout()}
                        image={numColumns == 1 ? GridIcon : ListIcon} />
                }
            />}>....</Screen>

如果我单击每个标题图标,我会收到此警告。这些导航命令在升级之前都可以使用。升级后它们仍然可以工作,但会发出此警告。我通过互联网搜索,发现此警告发生的唯一地方:

react-navigation/navigation-ex/packages/compat/src/createCompatNavigationProp.tsx

这是一个兼容层,用于处理 React Navigation 4 和 5 之间的各种 API 差异。我使用该库是因为我需要一些子组件中的导航道具。但我不明白他们为什么把警告放在那里!也许我收到警告是因为我没有使用打字稿!如果是这种情况,我可以安全地忽略此警告吗?谢谢你的帮助。

4

1 回答 1

1

当您升级或安装 @react-navigation/stack 或 @react-navigation/native 版本 5.7.x 时会出现此警告。

回归到:

"@react-navigation/compat": "5.1.28",
"@react-navigation/native": "5.6.1",
"@react-navigation/stack": "5.6.2"

现在也发出此警告。顺便说一句,这个警告绝对没问题。只是开发者误会了。我也在等这个更新。

从此参考: https ://github.com/react-navigation/react-navigation/issues/8348#issuecomment-657798321

于 2020-07-15T18:15:33.343 回答