如何解决:TypeError:超级表达式必须为null或函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决:TypeError:超级表达式必须为null或函数相关的知识,希望对你有一定的参考价值。
我正在制作一个小应用程序,并将其与API连接以检索一些信息并显示它。我已经在类中看到了一种解决方法,并且想尝试一下,但是它始终出现以下错误:“ TypeError:超级表达式必须为null或函数”。
我确实在App.js中制作了页面,但不确定是否会出现问题,因为我不确定在启动应用程序时如何加载组件/屏幕。我将export default function App()
更改为class App extends React.component
,以便能够使用一种状态来保存来自api的数据。
我已经尝试将export class ShowCustomerOrders extends React.Component
更改为export class ShowCustomerOrders extends Component
。但是结果没有改变。
import React, Component from 'react';
import StyleSheet, Text, View, Image from 'react-native';
import MapScreen from './components/MapScreen';
import createStackNavigator from '@react-navigation/stack';
import FlatList, TouchableOpacity from 'react-native-gesture-handler';
const Stack = createStackNavigator();
class App extends React.component
constructor()
super();
this.state =
orders: []
;
render()
getOrders();
return (
<View style=styles.container>
<Image style=styles.Map source=
uri: 'https://open.mapquestapi.com/staticmap/v5/map?center=eindhoven,5611DE,kerkstraat+7&locations=eindhoven,5611DE,kerkstraat+7|marker-md-FF0000-M&size=@2x&key=lYrP4vF3Uk5zgTiGGuEzQGwGIVDGuy24'
/>
<FlatList data=this.state.orders
renderItem=( item ) => <ShowCustomerOrders navigation=this.props.navigation order=item/>/>
</View>
);
function Map()
return(
<Stack.Navigator>
<Stack.Screen name="Map" component=MapScreen/>
</Stack.Navigator>
);
getOrders = async() =>
const response =
await fetch('https://api.summa.1ku.nl/mad/oefenexamen/');
const data = await response.json();
this.setState(
orders: data.orders
);
export class ShowCustomerOrders extends React.Component
render()
return(
<TouchableOpacity onPress=() => this.props.Navigation.navigate('Map', order:this.props.order)>
<Text> this.props.order.naam </Text>
<Text> this.props.order.adres </Text>
</TouchableOpacity>
);
const styles = StyleSheet.create(
container:
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
,
Map:
width: '80%',
height: '40%',
bottom: '20%'
);
我注意到您的代码中有几个错误。
1)您必须将props
传递给constructor
。
2)在此class
方法中,您需要使用this
引用调用一个函数。
3)在ShowCustomerOrders
组件中,必须使用道具写承包商才能使用props
。
4)default export
中没有[C0
这是我编辑的代码。您可以检查它是否有效。
App.js
我建议您使用import React, Component from 'react';
import StyleSheet, Text, View, Image from 'react-native';
import MapScreen from './components/MapScreen';
import createStackNavigator from '@react-navigation/stack';
import FlatList, TouchableOpacity from 'react-native-gesture-handler';
const Stack = createStackNavigator();
export default class App extends React.component
constructor(props)
super(props);
this.state =
orders: []
;
getOrders = async() =>
const response =
await fetch('https://api.summa.1ku.nl/mad/oefenexamen/');
const data = await response.json();
this.setState(
orders: data.orders
);
render()
this.getOrders();
return (
<View style=styles.container>
<Image style=styles.Map source=
uri: 'https://open.mapquestapi.com/staticmap/v5/map?center=eindhoven,5611DE,kerkstraat+7&locations=eindhoven,5611DE,kerkstraat+7|marker-md-FF0000-M&size=@2x&key=lYrP4vF3Uk5zgTiGGuEzQGwGIVDGuy24'
/>
<FlatList data=this.state.orders
renderItem=( item ) => <ShowCustomerOrders navigation=this.props.navigation order=item/>/>
</View>
);
function Map()
return(
<Stack.Navigator>
<Stack.Screen name="Map" component=MapScreen/>
</Stack.Navigator>
);
export class ShowCustomerOrders extends React.Component
constructor(props)
super(props);
render()
return(
<TouchableOpacity onPress=() => this.props.Navigation.navigate('Map', order:this.props.order)>
<Text> this.props.order.naam </Text>
<Text> this.props.order.adres </Text>
</TouchableOpacity>
);
const styles = StyleSheet.create(
container:
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
,
Map:
width: '80%',
height: '40%',
bottom: '20%'
);
(使用hooks
而不是function
),因为它有很多优点。同样使用该方法,您可以毫无问题地使用class
。
尝试带钩...
states
以上是关于如何解决:TypeError:超级表达式必须为null或函数的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:超级表达式必须为 null 或 React Native 中的函数
TypeError:超级表达式必须为空或函数,在 ReactJS 中未定义 [重复]
扩展“组件”;未捕获的TypeError:超级表达式必须为null或函数,而不是对象[重复]