2017-09-03 56 views
0

我打这个错误,当我试图定义我自己的自定义组件。反应错误 - 预期一个字符串或类/功能,但得到:undefined

// /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> 
    ) 
    } 
} 

使用它,但我打的错误“预期字符串或类/功能却得到了:不确定,请检查渲染“MyAppText”。任何的方法可以看到什么是错的出口语法?

如果我定义了同一个文档,然后它工作的一切,所以它是用的东西,我无法弄清楚出口。

+0

你自己的出口/进口看起来不错。不确定这是否是问题,但'ReactNative'中的'import {..}行应该是'from'react-native''。尽管如此,除非你出于某种原因在某个地方也有一个名为'ReactNative'的模块,否则我会期望它会崩溃。 – jevakallio

+0

啊,实际上它可能会导入React渲染器Shim,这要归功于这个全局可用的Haste模块:https://github.com/facebook/react-native/blob/6be550d85c29a6ded32dcfe1330577c202da9073/Libraries/Renderer/shims/ReactNative.js#L9 – jevakallio

回答

3

你自己的出口/进口看起来不错。不知道这是否是问题,但线

import {..} from 'ReactNative'; 

应该是:

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

您可能希望用不同的错误(模块未找到)崩溃,但由于this internal React Native file出口全球可用模块“ReactNative”通过Haste,您的导入最终会选择该文件。由于该文件不会导出属性ViewText,代码编译得很好,但最终会导致未定义的变量。

编辑更多的上下文

的阵营本地捆绑(称为Metro)使用Facebook的自己的模块系统(称为急速),它允许任何人来装饰与评论@providesModule Name一个文件,然后从导入全球任何地方只要import ... from 'Name';

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

+0

yes你是对的。问题在于反应原生拼写错误。不知道为什么它没有用错误的包名称抛出错误。 – Sydney

+0

我在答案中进行了扩展 - 这有点神秘,但完全合乎逻辑:) – jevakallio

相关问题