简体   繁体   English

React-Navigation:屏幕之间的导航

[英]React-Navigation: Navigation Between Screens

I am trying to navigate between different screens by pressing image components.我试图通过按图像组件在不同的屏幕之间导航。 Each different image leads to a different screen.每个不同的图像导致不同的屏幕。

I am firstly trying to navigate by clicking 'meo.sudoeste.png' to 'meo_sw'.我首先尝试通过单击“meo.sudoeste.png”到“meo_sw”来导航。 However whenever I press the image nothing happens.但是,每当我按下图像时,什么也没有发生。 This is my SearchScreen.js :这是我的SearchScreen.js

import React from 'react';
import {View, Text, StyleSheet, TouchableOpacity, TextInput, ScrollView, Image} from 'react-native';
import * as firebase from 'firebase';
import Icon from 'react-native-vector-icons/Ionicons';
import { StackNavigator } from 'react-navigation';

export default class HomeScreen extends React.Component { 
constructor(props) {
  super(props);
  this.state = {    }
    }

render() {      
    return (
    <View style={styles.screen}>
      <View style={styles.container}>
        <View>
          <Icon name={"ios-search"} style={styles.icon}/>
        </View>
        <TextInput style={styles.inputBox}
                  underlineColorAndroid='rgba(0,0,0,0)' 
                  placeholder="Procura aqui"
                  placeholderTextColor = "black"
                  selectionColor="black"
                  keyboardType="default"/>
      </View>
        <ScrollView style={styles.teste}> 
          <Text style={styles.festivais}>Recomendados</Text>
            <ScrollView horizontal={true} showsHorizontalScrollIndicator={false} style={styles.festivais_lista}>
              <TouchableOpacity onPress={() => this.props.navigation.navigate('meo_sw')}>
                <Image source={require('../assets/meo_sudoeste.png')} style={styles.image}/>
              </TouchableOpacity>
              <TouchableOpacity onPress={() => navigation.navigate('vodaf_coura')}>
                <Image source={require('../assets/vodafone_coura.png')} style={styles.image} />
              </TouchableOpacity>
              <TouchableOpacity onPress={() => navigation.navigate('superR_superB')}>
                <Image source={require('../assets/superbock_superrock.png')} style={styles.image}/>
              </TouchableOpacity>
              <TouchableOpacity onPress={() => navigation.navigate('nos')}>
                <Image source={require('../assets/nos_primavera.png')} style={styles.image}/>
              </TouchableOpacity>
              <TouchableOpacity onPress={() => navigation.navigate('rock_in_rio')}>
                <Image source={require('../assets/rock_in_rio.png')} style={styles.image}/>
              </TouchableOpacity>
              <TouchableOpacity onPress={() => navigation.navigate('edp_cool_jazz')}>
                <Image source={require('../assets/edp_cooljazz.png')} style={styles.image}/>
              </TouchableOpacity>
            </ScrollView>                    
      </ScrollView>
    </View>
  );       
}
  }


const styles = StyleSheet.create({
  // I took this off because it is irrelevant.
});

Could you please help me?请你帮助我好吗?

UPDATE更新

This is my App.js:这是我的 App.js:

import React from 'react';
import {createAppContainer, createSwitchNavigator} from 'react-navigation';
import {createStackNavigator} from 'react-navigation-stack';
import {createBottomTabNavigator} from 'react-navigation-tabs'
import {Ionicons} from '@expo/vector-icons';

import ChatScreen from './screens/ChatScreen';
import PostScreen from './screens/PostScreen';
import NotificationScreen from './screens/NotificationScreen';
import ProfileScreen from './screens/ProfileScreen';
import LoadingScreen from './screens/LoadingScreen';
import LoginScreen from './screens/LoginScreen';
import RegisterScreen from './screens/RegisterScreen';
import HomeScreen from './screens/HomeScreen';
import firebaseConfig from './config';
import * as firebase from 'firebase';

import meo_sw from '../Eventos/Festivais/meo_sw';

   const AppContainer = createStackNavigator(
{
  default: createBottomTabNavigator(
    {
        Home: {
          screen: HomeScreen,
          navigationOptions: {
            tabBarIcon: ({tintColor}) => <Ionicons name='ios-home' size={30} color={tintColor}></Ionicons>
          }
        },
        Chat: {
          screen: ChatScreen,
          navigationOptions: {
            tabBarIcon: ({tintColor}) => <Ionicons name='ios-chatboxes' size={30} color={tintColor}> </Ionicons>
          }
        },
        Home: {
          screen: HomeScreen,
          navigationOptions: {
            tabBarIcon: ({tintColor}) => <Ionicons name='ios-home' size={30} color={tintColor} style={{
              shadowColor:'#E9446A', 
              shadowOffset:{
               width:0, 
               heigth:0, 
               shadowRadius:10, 
               shadowOpacity:0.3}}}></Ionicons>
          }
        },
        Post: {
          screen: PostScreen,
          navigationOptions: {
            tabBarIcon: ({tintColor}) => 
            <Ionicons name='ios-add-circle' 
              size={48} color={tintColor}>
            </Ionicons>
          }
        },
        Notification: {
          screen: NotificationScreen,
          navigationOptions: {
            tabBarIcon: ({tintColor}) => <Ionicons name='ios-notifications' size={30} color={tintColor}> </Ionicons>
          }
        },
        Profile: {
          screen: ProfileScreen,
          navigationOptions: {
            tabBarIcon: ({tintColor}) => <Ionicons name='ios-person' size={30} color={tintColor}> </Ionicons>
          }
        }
      },
      {
        defaultNavigationOptions:{
          tabBarOnPress: ({navigation, defaultHandler}) => {
            if (navigation.state.key === 'Post') {
              navigation.navigate('postModal')
            } else {
              defaultHandler()
            }
          }
        },
        tabBarOptions: {
          activeTintColor: '#FFA200',
          inactiveTintColor: '#B8B8C4',
          showLabel: false
        }
      }
  ),
  postModal: {
    screen: PostScreen
  }
},
{
  mode: 'modal',
  headerMode:'none'
}
 )

  const AuthStack= createStackNavigator({
  Login: LoginScreen,
  Register: RegisterScreen
  })

  export default createAppContainer(
  createSwitchNavigator(
      {
          Loading: LoadingScreen,
          App: AppContainer,
          Auth: AuthStack
      },
      {
            initialRouteName: 'Loading'
          }       
      )
  )

In order to navigate to another screen that screen must be included in AppContainer .为了导航到另一个屏幕,该屏幕必须包含在AppContainer

If you want to navigate to meo_sw screen using this.props.navigation.navigate('meo_sw') , Create a new screen called meo_sw & place that inside the AppContainer .如果您想使用this.props.navigation.navigate('meo_sw')导航到meo_sw屏幕,请创建一个名为meo_sw的新屏幕并将其放置在AppContainer

Hope this helps you.希望这对你有帮助。 Feel free for doubts.如有疑问,请放心。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在屏幕之间导航使用反应导航 - Navigate between screens use react-navigation 即使遵循 react-navigation 文档,react-navigation 也无法在屏幕之间导航 - react-navigation can't navigate between screens even after following react-navigation docs 无法通过 react-navigation 的导航道具黑白屏幕 - unable to pass navigation props b/w screens with react-navigation React Native-使用react-navigation和react-redux在屏幕之间切换时数据丢失 - React Native - data is lost when switching between screens using react-navigation and react-redux 使用react native中的react-navigation在选项卡视图中的两个屏幕之间共享数据(数组) - Sharing data (an array) between two screens in tabs view using react-navigation in react native 使用反应导航延迟屏幕之间的导航 - Delaying Navigation between screens with react navigation 在 2 个屏幕之间反应本机导航 - React native navigation between 2 screens 如何将公共屏幕添加到 react-navigation - How do I add public screens to react-navigation 如何在反应导航中将道具传递给“屏幕”/组件 - How to pass props to 'screens'/components in react-navigation 如何在底部选项卡导航器 react-navigation 中卸载非活动屏幕? - How to unmount inactive screens in bottom tab navigator react-navigation?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM