Reactnative error - 期望一个字符串或类/函数但得到:undefined

时间:2017-09-03 14:46:14

标签: react-native

当我尝试定义自己的自定义组件时,我遇到了这个错误。

// /common/MyAppText.js
import React, {Component} from 'react';
import {
  Text,
  View,
} from 'ReactNative';

class MyAppText extends Component {
  render(){
    return (
      <View>
        <Text>hello</Text>
      </View>
    )
  }
}

export default MyAppText

在另一个应用程序中,我尝试导入它并通过

使用它
import MyAppText from './common/MyAppText'
class Home extends Component {
  render(){
    return (
      <View>
        <MyAppText />
      </View>
    )
  }
}

但我点击错误&#34;期望一个字符串或类/函数但得到:undefined,请检查&#39; MyAppText&#39;的渲染方法。任何人都可以看到导出语法有什么问题?

如果我在同一个文档中定义了所有内容,那么它就可以正常工作,因此导出的东西是我无法理解的。

1 个答案:

答案 0 :(得分:4)

您自己的出口/进口看起来很好。不确定这是否是问题,但行

import {..} from 'ReactNative';

应该是:

import {..} from 'react-native';

你可能会因为一个不同的错误(未找到模块)而崩溃,但由于this internal React Native file导出了一个全局可用的模块&#34; ReactNative&#34;通过Haste,您的导入最终会选择该文件。由于该文件不导出属性ViewText,因此代码编译良好,但最终会导致未定义的变量。

编辑更多上下文

React Native捆绑器(称为Metro)使用Facebook自己的模块系统(称为Haste),允许任何人用注释@providesModule Name装饰文件,然后从中导入全球任何地方只有import ... from 'Name';

其中一个内部渲染器模块声明@providesModule ReactNative。因此,当您导入from 'ReactNative'时,您获得了该模块而不是构建错误。