社区首页 >问答首页 >“无法读取未定义的属性导航”用于反应本地导航中的全屏模式

“无法读取未定义的属性导航”用于反应本地导航中的全屏模式
EN

Stack Overflow用户
提问于 2021-05-22 05:39:20
回答 1查看 252关注 0票数 0

当在标题的左上角单击“Account”按钮但收到错误时,我正在尝试呈现一个完整的屏幕模式。

无法读取未定义的属性导航

我这是怎么回事?

AppNavigator.js文件:

代码语言:javascript
代码运行次数:0
复制
import React, {useState} from 'react';
import {
  Button,
  Image,
  Modal,
  Pressable,
  Text,
  TextInput,
  TouchableOpacity,
  View,
} from 'react-native';
import {NavigationContainer} from '@react-navigation/native';
import {createStackNavigator} from '@react-navigation/stack';
import {HomeScreen} from '../../features/reports/screens/HomeScreen';
import {RiskAssessmentListScreen} from '../../features/reports/screens/RiskAssessmentListScreen';
import {ModalScreen} from '../../features/reports/screens/ModalScreen'

const Stack = createStackNavigator();

const AppNavigator = ({navigation}) => {

  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen
          name="GoPAD"
          component={HomeScreen}
          options={{
            headerLeft: () => (
              <Button
        onPress={() => navigation.navigate('MyModal')}
        title="Account"
      />
            ),
            headerRight: () => (
              <Image
                style={{tintColor: 'blue'}}
                source={require('../../../assets/img/refreshIcon.png')}
              />
            ),
          }}
        />
        <Stack.Screen name="MyModal" component={ModalScreen} />
        <Stack.Screen
          name="Fire Risk Assessment - Flats"
          component={RiskAssessmentListScreen}
          options={{headerBackTitle: 'Back'}}
        />
      </Stack.Navigator>
    </NavigationContainer>
  );
};

export default AppNavigator;

我的ModalScreen.js文件:

代码语言:javascript
代码运行次数:0
复制
import React from 'react'
import {View, Text, Button} from 'react-native'


export const ModalScreen = ({navigation}) => {
  return (
    <View style={{flex: 1, alignItems: 'center', justifyContent: 'center'}}>
      <Text style={{fontSize: 30}}>This is a modal!</Text>
      <Button onPress={() => navigation.goBack()} title="Dismiss" />
    </View>
  );
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-22 06:32:49

navigation道具只能在NavigationContainer的子代中使用。

您现在要做的是在NavigationContainer的父级访问NavigationContainer,因此navigation是未定义的。

有几种方法可以解决这个问题:

  1. 根据应用程序的结构,将NavigationContainer移动到App.jsindex.js
  2. 将一个ref传递给NavigationContainer,并引用ref的方法如文件所示
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67650143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文