首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在react本机中使用堆栈导航器

问无法在react本机中使用堆栈导航器
EN

Stack Overflow用户
提问于 2020-04-29 15:31:21
回答 1查看 113关注 0票数 0

App.js文件:

代码语言:javascript
复制
import 'react-native-gesture-handler';
        import * as React from 'react';
        import { NavigationContainer } from '@react-navigation/native';
        import { createStackNavigator } from '@react-navigation/stack';
        import Navigator from './routes/homeStack';
        import { StyleSheet, Text, View, Button } from 'react-native';

        export default function App(){
          return(

               <Navigator />

          );
        }


        const styles= StyleSheet.create({
          container:{
            fontSize: 24,
          }
        });

EditApollo.js文件:

代码语言:javascript
复制
import React,{Component} from 'react';
import {  Platform, StyleSheet, StatusBar, View, Text, TouchableOpacity, FlatList, 
TouchableHighlight} from 'react-native';
import Icon from 'react-native-vector-icons/FontAwesome';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import firebase from 'firebase';
 if (!firebase.apps.length) {
   firebase.initializeApp({});}
class EditApollo extends Component {
 constructor(props){
  super(props);
    this.state={
    users1:[]
   }
  }
 componentDidMount= () =>{
  firebase.database().ref('users1').once('value').then(snapshot => {
     var items = [];
   snapshot.forEach((child) => {
     items.push({
        email: child.val().email,
        password: child.val().password,
       // price: child.val().price,
     });
  });
  this.setState({ users1: items});
  console.log(this.state.users1)
   });
  }
  render() {
  return(
    <View style={styles.container}>
   <FlatList style={{width:'100%'}} data={this.state.users1} showsVerticalScrollIndicator={false}
   renderItem={elem => (<View style={{elevation:8, marginBottom:13, borderRadius:15, 
  backgroundColor:'#575FCF', padding:20}}>
   <Text style={{fontSize:18, fontWeight:'bold', color:'#fff'}}>{elem.item.email}</Text>
  <Text style={{fontSize:18, fontWeight:'bold', lineHeight:25, color:'#fff'}}>{elem.item.password}  
  </Text>
  <View>
   <TouchableHighlight onPress={() => this.props.navigation.navigate('Edit1')}>
       <View>
             <Icon size={30} color="white" name="edit" />
       </View>
   </TouchableHighlight>        
   <TouchableHighlight>
      <View>
            <Icon size={30} color="white" name="close" />
      </View>
    </TouchableHighlight>        
  </View>
 </View>)}
  />
 </View>
 )
 }
 }
 export default EditApollo;

用于导航我的文件是homeStack.js

代码语言:javascript
复制
import { createStackNavigator } from 'react-navigation-stack';
import { createAppContainer } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
import { createAppContainer } from 'react-navigation';
import Login from '../src/pages/Login';
import EditApollo from '../src/pages/EditApollo';
 import Edit1 from '../src/pages/Edit1';

 const screens={
  Login:{
    screen: Login,
    navigationOptions:{
    title: 'Login Page',
    headerStyle:{ backgroundColor:'#333' }
    } 
 },
 EditApollo:{
  screen: EditApollo,
  navigationOptions:{
    title: 'Edit Apollo Records',
    headerStyle:{ backgroundColor:'#333' }
   }
 },
 Edit1:{
    screen: Edit1,
   navigationOptions:{
    title: 'Edit Records',
    headerStyle:{ backgroundColor:'#333' }
   }
 },
 }

const HomeStack = createStackNavigator(screens, {
defaultNavigationOptions:{
    headerTintColor: '#eee',    
    headerStyle:{ height:50 }
 }
  });
export default createAppContainer(HomeStack);

Edit.js文件是

代码语言:javascript
复制
import React,{Component} from 'react';
import {  Platform, StyleSheet, StatusBar, View, Text } from 'react-native';
class Edit1 extends Component <{}>{
render(){
    return (
            <View style={styles.container}>
                <Text>hii</Text>
            </View>
        );
        }
    }
 const styles = StyleSheet.create({
 container: {
 flex:1,
 justifyContent: 'center',
  alignItems: 'center',
  backgroundColor: '#fff',
   },
 });
 export default Edit1;

package.json文件:

代码语言:javascript
复制
  {
   "name": "newapp",
   "version": "0.0.1",
   "private": true,
   "scripts": {
  "android": "react-native run-android",
  "ios": "react-native run-ios",
  "start": "react-native start",
  "test": "jest",
 "lint": "eslint ."
 },
 "dependencies": {
 "@react-native-community/masked-view": "^0.1.10",
 "@react-navigation/native": "^5.1.6",
 "@react-navigation/stack": "^5.2.13",
 "firebase": "^7.14.2",
 "react": "16.11.0",
 " react-native": "0.62.2",
 "react-native-elements": "^1.2.7",
 "react-native-gesture-handler": "^1.6.1",
 "react-native-keyboard-spacer": "^0.4.1",
 "react-native-reanimated": "^1.8.0",
 "react-native-safe-area-context": "^0.7.3",
 "react-native-screens": "^2.5.0",
 "react-native-table-component": "^1.2.1",
 "react-native-vector-icons": "^6.6.0",
 "react-navigation": "^4.3.8",
 "react-navigation-drawer": "^2.4.12",
 "react-navigation-stack": "^2.3.13"
 }, 
 "devDependencies": {
 "@babel/core": "7.9.0",
 "@babel/runtime": "7.9.2",
 "@react-native-community/eslint-config": "0.0.5",
 "babel-jest": "24.9.0",
  "eslint": "6.8.0",
 "jest": "24.9.0",
  "metro-react-native-babel-preset": "0.58.0",
  "react-test-renderer": "16.11.0"
 },
"jest": {
 "preset": "react-native",
 "setupFiles": [
   "./node_modules/react-native-gesture-handler/jestSetup.js"
 ]
 }
 }

我想导航到Edit1页面,但在onPress中显示类型错误:未定义不是一个对象(计算'__this2.props.navigation.navigate'),我应该怎么做才能解决这个错误?为什么这个错误会出现在this.props.navigation.navigate中,有什么特别的原因吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-29 17:31:34

在updateApollo中加载EditApollo时,需要将导航属性传递给EditApollo

在您的UpdateApollo.js中:

更改:

代码语言:javascript
复制
<EditApollo />

至

代码语言:javascript
复制
<EditApollo navigation={navigation} />

这将修复您的错误。

查看图片以供参考:

​

​

按下后,导航至Edit screen:

​

​

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61496432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档