MrKarton
@MrKarton
Погромист

Как использовать React-navigation если сцена это класс?

В доках на официальном сайте библиотеки сцены представлены в виде функций, куда мы передаём класс navigation в качестве аргемента. В моём же проекте сцена - это класс.
Как мне сделать навигацию из сцены login на сцену StreamScreen?

App.js:
import 'react-native-gesture-handler';
import { YellowBox } from 'react-native';
import {createStackNavigator} from "@react-navigation/stack";
import {NavigationContainer} from "@react-navigation/native"
import React from 'react';

YellowBox.ignoreWarnings([
  'Unrecognized WebSocket connection option(s) `agent`, `perMessageDeflate`, `pfx`, `key`, `passphrase`, `cert`, `ca`, `ciphers`, `rejectUnauthorized`. Did you mean to put these under `headers`?'
])

import StreamScreen from "./src/Scenes/Stream";
import Login from "./src/Scenes/Login";

const Stack = createStackNavigator();

function App ()
{
  return(
    <NavigationContainer>
      <Stack.Navigator screenOptions={
        {header:() => null}
      }>
        <Stack.Screen name="Login" component={Login} />
        <Stack.Screen name="Stream" component={StreamScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  )
}

export default App;


Login.js:
import { StyleSheet, Text, View, TextInput, Button, Dimensions } from 'react-native';
import React, { Component } from 'react';
import { createStackNavigator } from "@react-navigation/stack";
import {NavigationState} from "@react-navigation/native"

var sh = Dimensions.get("window").height / 100;
var sv = Dimensions.get("window").width / 100; 

var Stack = createStackNavigator();

class Login extends Component{
    constructor(props)
    {
        super(props);

        this.state = {
            Login : '',
            Password : ''
        }
    }

    handleLogin = (text) => {
        this.setState({Login:text});
    }

    handlePass = (text) => {
        this.setState({Password:txt});
    }

    render(){
        return (
            <View style={styles.TopView}>
                <Text style={styles.TitleText}> Вход </Text>
                
                <View style={styles.InputContainer}>
                    <Text style={styles.InputTitle}>Логин</Text>
                    <View style={styles.InputBox}><TextInput onChangeText={this.handleLogin} /></View>
                </View>

                <View style={styles.InputContainer}>
                    <Text style={styles.InputTitle}>Пароль</Text>
                    <View style={styles.InputBox}><TextInput onChangeText={this.handlePass} /></View>
                </View>

                <View style={styles.LogButton} onPress={()=> {}}>
                    <Text style={styles.LogButtonText}>Войти</Text>
                    
                </View>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    TopView: {
        backgroundColor: "#2C343A",
        height: "100%",
        alignItems: 'center',
    },

    TitleText:{
        color: "#ffff",
        fontSize: 40,
        marginTop: sh * 15
    },

    InputContainer:{
        color: "#ffff",
        marginTop: sh * 5
    },  

    InputTitle:{
        color: "#ffff",
        fontSize: 15
    },

    InputBox:{
        backgroundColor: "#ffff",
        height: sh*5,
        width: sv * 50,
    },

    LogButton:{
        width: sv * 50,
        backgroundColor: "#3CBDFA",
        marginTop: sh * 10,
        alignItems: "center"
    },

    LogButtonText:{
        color: "#ffff",
        fontSize: 20
    }

});


export default Login;
  • Вопрос задан
  • 201 просмотр
Решения вопроса 1
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы