代码之家  ›  专栏  ›  技术社区  ›  Raptor

反应导航:禁用模态动画

  •  0
  • Raptor  · 技术社区  · 7 年前

    是否可以禁用React导航的模式动画?

    class HomeScreen extends React.Component {
      static navigationOptions = ({ navigation }) => {
        const params = navigation.state.params || {};
    
        return {
          headerLeft: (
            <Button
              onPress={() => navigation.navigate('MyModal')}
              title="Info"
              color="#fff"
            />
          ),
          /* the rest of this config is unchanged */
        };
      };
    
      /* render function, etc */
    }
    
    class ModalScreen extends React.Component {
      render() {
        return (
          <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
            <Text style={{ fontSize: 30 }}>This is a modal!</Text>
            <Button
              onPress={() => this.props.navigation.goBack()}
              title="Dismiss"
            />
          </View>
        );
      }
    }
    
    const MainStack = createStackNavigator(
      {
        Home: {
          screen: HomeScreen,
        },
        Details: {
          screen: DetailsScreen,
        },
      },
      {
        /* Same configuration as before */
      }
    );
    
    const RootStack = createStackNavigator(
      {
        Main: {
          screen: MainStack,
        },
        MyModal: {
          screen: ModalScreen,
        },
      },
      {
        mode: 'modal',
        headerMode: 'none',
      }
    );
    

    示例来自React本地官方文件: https://reactnavigation.org/docs/en/modal.html

    2 回复  |  直到 7 年前
        1
  •  6
  •   Jeff Gu Kang    7 年前

    解决方案

    使用 transitionSpec transitionConfig Official

    示例(未测试)

    const ModalNavigator = createStackNavigator(
      {
        Main: { screen: Main },
        Login: { screen: Login },
      },
      {
        headerMode: 'none',
        mode: 'modal',
        defaultNavigationOptions: {
          gesturesEnabled: false,
        },
        transitionConfig: () => ({
          transitionSpec: {
            duration: 0,
          },
        })
    ...
    
        2
  •  0
  •   Nerdragen    7 年前

    这不是你想要的,但是你可以使用内置的 Modal 情态动词 animationtype prop 可以设置为“无”以获得无动画模式。

    推荐文章