使用 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工作。