如何控制 React Navigation 的 focusHandler 的行为

问题描述 投票:0回答:0

使用 React Navigation 的 Drawer Navigation,我创建了具有以下结构的 Navigation。

<Drawer.Navigator>
    <Drawer.Screen name="First" component={First} />
    <Drawer.Screen name="Second" component={Second} />
    <Drawer.Screen name="Third" component={Third} />
</Drawer.Navigator>

每个Drawer Screen组件都有Stack Navigation的结构,如下图所示。我在每个抽屉组件中使用

useContext
创建了提供者。(FirstProvider,SecondProvider,ThirdProvider)

<FirstProvider>
    <Stack.Navigator>
        <Stack.Screen name="FirstScreen" component={FirstScreen} />
        <Stack.Screen name="FirstDetail" component={FirstDetail} />
    </Stack.Navigator>
</FirstProvider>

我在FirstScreen中定义了

focusHandler
函数,如下所示。在firstFunc的情况下,它是从
FirstProvider
获得的函数。

useEffect(() => {
    const focusHandler = navigation.addListener("focus", firstFunc);
    return focusHandler;
}, []);

我很好奇的是:是否可以让foucsHandler只在

Drawer Navigation
变化时工作?

例如,从

FirstScreen
移动到
FirstDetail
后,我希望focusHandler在我回到
FirstScreen
时不工作。

另一个例子,如果我通过抽屉从

First
移动到
Second
然后返回到First,我希望FirstScreen
focusHandler
工作。

react-native react-navigation react-navigation-drawer
© www.soinside.com 2019 - 2024. All rights reserved.