如何防止反应导航在 StackAction.reset 期间显示过渡动画?
How do I prevent react-navigation from showing a transition animation during StackAction.reset?
使用 react-navigation-stack 1.10.3,重置 StackActions 会在没有过渡的情况下加载新堆栈。与 react-navigation-stack 2.0.15 相同的代码片段添加了一个平台默认转换,iOS 是 SlideFromRightIOS。
如何在 1.10.X 和 2.0.X 上复制之前的行为,其中在堆栈重置时没有转换?
navigation.dispatch(
StackActions.reset({
index: 0,
actions: [
NavigationActions.navigate({
routeName: user ? 'Home' : 'Landing',
}),
],
}),
);
您可以通过在 Home
和 Landing
屏幕的 navigationOptions
中添加 animationEnabled: false
来禁用这些屏幕的动画。
Home.navigationOptions = {
animationEnabled: false
}
React导航V5
{/* Screen level */}
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen
name="HomeScreen"
component={HomeScreen}
options={{
animationEnabled: false,
}}
/>
</Stack.Navigator>
</NavigationContainer>
{/* Whole navigation stack */}
<Stack.Navigator screenOptions={{ animationEnabled: false }}></Stack.Navigator>
否则你可以这样做来避免 android 中的闪烁效果:
import { createStackNavigator, CardStyleInterpolators } from '@react-navigation/stack';
<Stack.Navigator
initialRouteName="CustomFooter" headerMode="none"
screenOptions={{ cardStyleInterpolator: Platform.OS == 'ios' ? CardStyleInterpolators.forHorizontalIOS : CardStyleInterpolators.forNoAnimation }} >
</Stack.Navigator >
使用 react-navigation-stack 1.10.3,重置 StackActions 会在没有过渡的情况下加载新堆栈。与 react-navigation-stack 2.0.15 相同的代码片段添加了一个平台默认转换,iOS 是 SlideFromRightIOS。
如何在 1.10.X 和 2.0.X 上复制之前的行为,其中在堆栈重置时没有转换?
navigation.dispatch(
StackActions.reset({
index: 0,
actions: [
NavigationActions.navigate({
routeName: user ? 'Home' : 'Landing',
}),
],
}),
);
您可以通过在 Home
和 Landing
屏幕的 navigationOptions
中添加 animationEnabled: false
来禁用这些屏幕的动画。
Home.navigationOptions = {
animationEnabled: false
}
React导航V5
{/* Screen level */}
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen
name="HomeScreen"
component={HomeScreen}
options={{
animationEnabled: false,
}}
/>
</Stack.Navigator>
</NavigationContainer>
{/* Whole navigation stack */}
<Stack.Navigator screenOptions={{ animationEnabled: false }}></Stack.Navigator>
否则你可以这样做来避免 android 中的闪烁效果:
import { createStackNavigator, CardStyleInterpolators } from '@react-navigation/stack';
<Stack.Navigator
initialRouteName="CustomFooter" headerMode="none"
screenOptions={{ cardStyleInterpolator: Platform.OS == 'ios' ? CardStyleInterpolators.forHorizontalIOS : CardStyleInterpolators.forNoAnimation }} >
</Stack.Navigator >