реакция-навигация: отключить модальную анимацию - PullRequest
0 голосов
/ 03 декабря 2018

Можно ли отключить модальную анимацию React Navigation?

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 Native: https://reactnavigation.org/docs/en/modal.html

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Решение

Используйте transitionSpec в transitionConfig для перехода на другой экран.И сделать длительность перехода в ноль. Официальный

Пример (не тестировался)

const ModalNavigator = createStackNavigator(
  {
    Main: { screen: Main },
    Login: { screen: Login },
  },
  {
    headerMode: 'none',
    mode: 'modal',
    defaultNavigationOptions: {
      gesturesEnabled: false,
    },
    transitionConfig: () => ({
      transitionSpec: {
        duration: 0,
      },
    })
...
0 голосов
/ 03 декабря 2018

Это не совсем то, что вы хотите, но вы можете использовать встроенный компонент Modal, отображающий экран.Преимущество этого состоит в том, что компонент Modal имеет animationtype prop , который можно установить равным "none", чтобы получить модал без анимации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...