当我尝试定义自己的自定义组件时,我遇到了这个错误。
// /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;的渲染方法。任何人都可以看到导出语法有什么问题?
如果我在同一个文档中定义了所有内容,那么它就可以正常工作,因此导出的东西是我无法理解的。
答案 0 :(得分:4)
您自己的出口/进口看起来很好。不确定这是否是问题,但行
import {..} from 'ReactNative';
应该是:
import {..} from 'react-native';
你可能会因为一个不同的错误(未找到模块)而崩溃,但由于this internal React Native file导出了一个全局可用的模块&#34; ReactNative&#34;通过Haste,您的导入最终会选择该文件。由于该文件不导出属性View
和Text
,因此代码编译良好,但最终会导致未定义的变量。
编辑更多上下文:
React Native捆绑器(称为Metro)使用Facebook自己的模块系统(称为Haste),允许任何人用注释@providesModule Name
装饰文件,然后从中导入全球任何地方只有import ... from 'Name';
其中一个内部渲染器模块声明@providesModule ReactNative
。因此,当您导入from 'ReactNative'
时,您获得了该模块而不是构建错误。