我有一个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_SEGMENT
和 line-41
之间切换时记录在 HomeScreen
消息中。