在我的代码中放置叠加层时,我是第一个出现此错误的人
const HomeScreen = ({ navigation }) => {
const [modal, setModal] = useState(true);
return (
<View>
<Button
buttonStyle="moreBtn"
title="aaa"
onPress={() =>
navigation.navigate('Profile', { name: 'Jane' })
}
/>
<Overlay>
<Text>Hello from verlay!</Text>
</Overlay>
<Modal
animationType="slide"
transparent={true}
visible={modal}
style={styles.modal}
onPress={() => {
setModal(false)
}}
>
<View style={{height:500}}>
<Text>aaaaa</Text>
<Button onPress={() => {
setModal(false)
}}>Bouton</Button>
</View>
</Modal>
</View>
);
};
当我将叠加组件JSX放在渲染函数中时,出现此错误:
Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.
为什么?
我编辑了帖子,将以下导入内容添加到文件顶部。
import { StatusBar } from 'expo-status-bar';
import React, { useState } from 'react';
import { TouchableOpacity, StyleSheet, Text, View, Button, FlatList, ScrollView, Modal } from 'react-native';
import Overlay from 'react-native';
import 'react-native-gesture-handler';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
“主屏幕”位于“应用” BottomTabNavigator元素内
export default App;
答案 0 :(得分:2)
您导入的覆盖错误地是本机没有覆盖组件,您可以使用react-native-elements
中的覆盖
更改
import Overlay from 'react-native';
到
import { Overlay } from 'react-native-elements';
检查此:https://react-native-elements.github.io/react-native-elements/docs/overlay.html
答案 1 :(得分:0)
尽管@ user12129132在这里已经回答了这个问题,但我将其留给未来的发现者以更多的信息作为答案。
首先,这个错误,至少就我所知,总是意味着您错误地导入了某些内容。如果您要导入自己的组件/功能,则可能导出不正确。
对于此特定示例,您将导入弄乱了2次。
首先:叠加层不是react-native的一部分,所以失败了。
第二:覆盖不是它来自的包的默认导出。
导入采用以下格式:`从“包名称/文件路径”导入import DefaultExport,{NamedExport1,NamedExport2 ...};
在查看此类错误时,请首先检查您的导出,如果它是您要从中导入的文件,然后检查您的导入以确保它符合上述格式,则经常交换命名导出和默认导出。有时,实际的错误是在您导入的文件中,并且IT导入已损坏-跟踪和修复这些乐趣很有趣。
容易犯的错误,一旦学习就容易解决。
因此,鉴于以上信息,您的导入应如下所示:
import { Overlay } from 'react-native-elements';