Подтвердить что ты не робот

Пример навигации между представлениями в React Native Android?

После проверки документации React Native я до сих пор не понимаю, как лучше всего создавать представления и перемещаться между различными компонентами.

Я не хочу использовать внешние компоненты, например:

https://github.com/Kureev/react-native-navbar/

https://github.com/23c/react-native-transparent-bar

https://github.com/superdami/react-native-custom-navigation

Мне не нужна панель навигации, я просто хочу установить представления и повернуть влево, вправо, а не всплывать, и ничего больше.

Я знаю, что-то базовое, но я не могу найти полезный пример.

Пожалуйста, кто-нибудь может мне помочь? Любой функциональный пример в https://rnplay.org/?

Спасибо.

4b9b3361

Ответ 1

Смотрите этот пример: https://github.com/h87kg/NavigatorDemo

Это полезно и хорошо написанный пример Navigator, лучше, чем тот, над которым вы только что писали, я думаю.

В основном наблюдайте связь между LoginPage.js и MainPage.js

Ответ 2

Я нашел этот пример: https://rnplay.org/apps/HPy6UA

И я написал учебник об этом: https://playcode.org/navigation-in-react-native/

Очень полезно понять навигацию в React Native:

'use strict';

var React = require('react-native');

var {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Navigator,
  TouchableOpacity,
} = React;

var SCREEN_WIDTH = require('Dimensions').get('window').width;
var BaseConfig = Navigator.SceneConfigs.FloatFromRight;

var CustomLeftToRightGesture = Object.assign({}, BaseConfig.gestures.pop, {
  // Make it snap back really quickly after canceling pop
  snapVelocity: 8,
  // Make it so we can drag anywhere on the screen
  edgeHitWidth: SCREEN_WIDTH,
});

var CustomSceneConfig = Object.assign({}, BaseConfig, {
  // A very tighly wound spring will make this transition fast
  springTension: 100,
  springFriction: 1,
  // Use our custom gesture defined above
  gestures: {
    pop: CustomLeftToRightGesture,
  }
});

var PageOne = React.createClass({
  _handlePress() {
    this.props.navigator.push({id: 2,});
  },

  render() {
    return (
      <View style={[styles.container, {backgroundColor: 'green'}]}>
        <Text style={styles.welcome}>Greetings!</Text>
        <TouchableOpacity onPress={this._handlePress}>
          <View style={{paddingVertical: 10, paddingHorizontal: 20, backgroundColor: 'black'}}>
            <Text style={styles.welcome}>Go to page two</Text>
          </View>
        </TouchableOpacity>
       </View>
    )
  },
});

var PageTwo = React.createClass({
  _handlePress() {
    this.props.navigator.pop();
  },

  render() {
    return (
      <View style={[styles.container, {backgroundColor: 'purple'}]}>
        <Text style={styles.welcome}>This is page two!</Text>
        <TouchableOpacity onPress={this._handlePress}>
          <View style={{paddingVertical: 10, paddingHorizontal: 20, backgroundColor: 'black'}}>
            <Text style={styles.welcome}>Go back</Text>
          </View>
        </TouchableOpacity>
       </View>
    )
  },
});

var SampleApp = React.createClass({
  _renderScene(route, navigator) {
    if (route.id === 1) {
      return <PageOne navigator={navigator} />
    } else if (route.id === 2) {
      return <PageTwo navigator={navigator} />
    }
  },

  _configureScene(route) {
    return CustomSceneConfig;
  },

  render() {
    return (
      <Navigator
        initialRoute={{id: 1, }}
        renderScene={this._renderScene}
        configureScene={this._configureScene} />
    );
  }
});

var styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
    color: 'white',
  },
});

AppRegistry.registerComponent('SampleApp', () => SampleApp);

module.exports = SampleApp;

Ответ 3

Я предлагаю вам использовать react-navigation, вы можете взглянуть на игровое поле Navigator example

  • Компоненты, созданные для iOS и Android
  • Выберите TabNavigator, DrawerNavigator и StackNavigator.
  • Внедрите CustomNavigator
  • Создайте собственный виды навигации
  • Разделяйте логику между мобильными приложениями, веб-приложениями с рендерингом сервера.
  • Документация довольно сложна.
  • Интегрируется редукция.
  • Это очень просто!
  • Станет официальным навигатором, предложенным реагировать-родным!

Установите навигационный модуль.

npm install --save react-navigation

Импортируйте его в свое приложение

import {
  TabNavigator,
} from 'react-navigation';

const BasicApp = TabNavigator({
  Main: {screen: MainScreen},
  Setup: {screen: SetupScreen},
});

... и перемещаться по

class MainScreen extends React.Component {
  static navigationOptions = {
    label: 'Home',
  };
  render() {
    const { navigate } = this.props.navigation;
    return (
      <Button
        title="Go to Setup Tab"
        onPress={() => navigate('Setup')}
      />
    );
  }
}