gpt4 book ai didi

reactjs - React 导航 6 - 从一个堆栈 A 导航到堆栈屏幕 B - 为什么屏幕 B 不调用 useEffect(但呈现)?

转载 作者:行者123 更新时间:2023-12-05 04:19:54 24 4
gpt4 key购买 nike

我在堆栈导航器中有一个嵌套的选项卡导航器。

  • 当我从选项卡屏幕 A 导航到堆栈屏幕 B 时,B 的 useEffect 被调用,一切正常。
  • 当我从 Stack Screen C 导航到 Stack Screen B 时,B 的 useEffect 没有被调用。我不明白为什么。- 我可以从两个屏幕导航到屏幕 B,这不是问题所在。我也可以传递参数。唯一的问题是来自 C 的 useEffect 没有被调用,来自 A 的工作正常。

我在两种情况下都使用相同的:

 <Button title="goTo" onPress={() => props.navigation.navigate('SearchResults', {id: id})}/>

我还尝试使用 useIsFocused 和 useFocusEffect,但是当我从堆栈屏幕 C 导航时它也没有被调用。我做错了什么?

编辑:似乎问题在于导航到屏幕 C(我尝试从中导航到屏幕 B(未安装)是我在选项卡导航器的标题中定义了它。如果我不这样做,我可以导航到 C 和 C 会mount.但我不明白为什么会这样或该怎么做。所以在我的代码中:当我从 NotificationsScreen 导航到 SearchResultsScreen 时,SearchScreen 不会挂载(看起来是因为我从选项卡导航器的标题访问 NotificationsScreen)

const MyTabs = (props) => {
return (
<Tab.Navigator
screenOptions={{
headerRight: (props) => (
<TouchableOpacity onPress={() => navigation.navigate("Notifications")}>
<Icon name="notifications"/>
</TouchableOpacity>
)
}}
>
<Tab.Screen
name="Home"
component={HomeScreen}
/>
<Tab.Screen
// when I navigate from SearchScreen to SearchResultsScreen, SearchResultsScreen useEffect is called
name="Search"
component={SearchScreen}
/>
</Tab.Navigator>
);
}
const MyStack = () => {
return (
<Stack.Navigator>
<Stack.Screen name="Tabs">
{(props) => <MyTabs {...props} />}
</Stack.Screen>
<Stack.Screen
name="SearchResults"
component={SearchResultsScreen}
/>
<Stack.Screen
name="Notifications"
component={NotificationsScreen}
// when I navigate from NotificationsScreen to SearchResultsScreen, SearchResultsScreen useEffect is NOT called
/>
</Stack.Navigator>

最佳答案

您可以在通知组件中使用

navigation.replace("SearchResults", null, null)

关于reactjs - React 导航 6 - 从一个堆栈 A 导航到堆栈屏幕 B - 为什么屏幕 B 不调用 useEffect(但呈现)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74655757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com