导航屏幕时,BottomTabNavigator 内的 StackNavigator 会重新呈现

时间:2021-05-28 23:15:09

标签: react-native react-navigation

我有一个public class BorderAnimation { private Border _border { get; } private DoubleAnimation _animation; private bool _isAnimating; public BorderAnimation(Border border) { _border = border; _animation = new DoubleAnimation { From = 0.0, To = 1.0, Duration = new Duration(TimeSpan.FromSeconds(.3)), AutoReverse = true, }; _animation.Completed += _animation_Completed; } private void _animation_Completed(object sender, EventArgs e) { _isAnimating = false; } public void Animate() { Application.Current.Dispatcher.InvokeAsync(() => animateImpl(type)); //invoke required, because call will be from another thread in this particular case } private void animateImpl() { if (_isAnimating) return; _isAnimating = true; _border.BeginAnimation(Border.OpacityProperty, _animation); } } Tab Navigator 包含 Tabs

代码结构为:

Stack Navigators

问题是每当我在 Tab = createBottomTabNavigator(); HomeStack = createStackNavigator(); SettingStack = createStackNavigator(); function HomeScreen(){ return //some JSX }; function ProfileScreen(){ return //some JSX }; function SettingScreen(){ return //some JSX }; function MyStack(){ // *********************** THIS_SEGMENT **************************** // return( <HomeStack.Navigator> <HomeStack.Screen component={HomeScreen} /> <HomeStack.Screen component={ProfileScreen} /> </HomeStack.Navigator> ) } function SettingStackScreen(){ return( <SettingStack.Navigator> <SettingStack.Screen component={SettingScreen} /> </SettingStack.Navigator> ) } export default function App() { return ( <NavigationContainer> <Tab.Navigator> <Tab.Screen component={MyStack} /> <Tab.Screen component={SettingStackScreen} /> </Tab.Navigator> </NavigationContainer> ); } HomeScreen 之间导航时,都会执行 ProfileScreen

我不想在两个屏幕之间切换时执行 THIS_SEGMENT 部分。

这是显示我的问题的零食链接:https://snack.expo.io/@vipulchandra04/nested-stacknavigator .在 THIS_SEGMENTline-41 之间切换时记录在 HomeScreen 消息中。

0 个答案:

没有答案