React Native错误:元素类型无效:期望字符串或类/函数但得到:object

Par*_*ism 29 javascript android reactjs react-native

我收到此错误,我在修复此问题时遇到了很多麻烦.

我在这里尝试做的是有3个不同的屏幕,并有一个导航到每个屏幕的tabbar.

这是我的索引:

import React, { Component } from 'react';
import { AppRegistry, Navigator, StyleSheet, View, Text } from 'react-native';

import Nav from './app/components/Nav';
import Screen from './app/Screen';

import Tabs from 'react-native-tabs'

import SwitchView from './SwitchView';

class Proj extends Component {

constructor(props){
    super(props);
}

render(){
    var x = "FeedView";
    return(

          <View style={styles.container}>
            <Tabs selected={x} style={{backgroundColor:'white'}}
                  selectedStyle={{color:'red'}} onSelect={el=> {x = el.props.name}}>
                <Text name="FeedView">First</Text>
                <Text name="WikiView" selectedIconStyle={{borderTopWidth:2,borderTopColor:'red'}}>Second</Text>
                <Text name="BoardView">Third</Text>
            </Tabs>

            <SwitchView id={x}/>

          </View>
    );
}
}

const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
})

AppRegistry.registerComponent('Proj', () => Proj);
Run Code Online (Sandbox Code Playgroud)

这是我的SwitchView:

import Feed from './app/pages/Feed/Feed';
import Board from './app/pages/Board';
import Wiki from './app/pages/Wiki';

class SwitchView extends Component {
render(){
    var { id } = this.props;

    switch (id) {
        case "FeedView":
            return <Feed/>
        case "WikiView":
            return <Wiki/>
        case "BoardView":
            return <Board/>
    }
}
}
Run Code Online (Sandbox Code Playgroud)

nyb*_*bon 48

这可能是由程序中的某些JS模块导出/导入问题引起的,通常是出于以下两个原因之一:

  • 您忘记导出,或导出错误的内容
  • 您导入不存在的内容,或导入错误的内容

我遇到了类似的错误,但在我的情况下,它不是由export而引起的import,并且我import错误地使用了语句来导入模块中不存在的东西.

在我的情况下,import错误地写为:

import { MyComponent } from './MyComponents/MyComponent'

实际上它应该是:

import MyComponent from './MyComponents/MyComponent'

它让我疯狂,花了我一整天的时间来弄清楚它,我希望这会为一些人节省几个小时.

  • 我也有这个问题.我了解到这取决于MyComponent的导出方式.当你输出'export default MyComponent;'时 然后导入没有{}.如果在导出中不使用default关键字,则需要使用{}括起组件名称,即{MyComponent}. (5认同)

小智 24

将SwitchView定义更改为

export default class SwitchView extends Component...


小智 7

将SwitchView修改为:

import Feed from './app/pages/Feed/Feed';
import Board from './app/pages/Board';
import Wiki from './app/pages/Wiki';
export default class SwitchView extends Component {
render(){
    var { id } = this.props;

    switch (id) {
        case "FeedView":
            return <Feed/>
        case "WikiView":
            return <Wiki/>
        case "BoardView":
            return <Board/>
    }
}
}
Run Code Online (Sandbox Code Playgroud)


Suj*_*jit 5

我只针对安装的软件包遇到了这个问题。以前我写为

import WebView from 'react-native-webview-messaging/WebView';
Run Code Online (Sandbox Code Playgroud)

我改为

import { WebView } from 'react-native-webview-messaging/WebView';
Run Code Online (Sandbox Code Playgroud)