我的反应原生项目中出现“无法找到变量:React”错误。但是,令我感到困惑的是,我在该文件中根本不使用React
,但是,我正在导入一个使用它的自定义组件。这是我问题的MCVE。
首先construction.js
:
import React from 'react';
import { View, Text } from 'react-native';
class UnderConstruction extends React.Component {
render() {
return (
<View>
<Text style={{ padding: 75 }}>
This page is under construction :(
</Text>
</View>
);
}
}
export default UnderConstruction;
接下来,render.js
:
import UnderConstruction from './construction';
export function render() {
return (
<UnderConstruction />
);
}
最后,index.ios.js
:
import React from 'react';
import { AppRegistry } from 'react-native';
import * as Factory from './render';
class Demo extends React.Component {
render() {
return Factory.render();
}
}
AppRegistry.registerComponent('Demo', () => Demo);
运行此应用会导致Can't find variable: React
行号render.js
上的错误5
,即:
<UnderConstruction />
我发现问题可以通过在import
上为React
添加render.js
语句来解决,例如:
import React from 'react';
import UnderConstruction from './construction';
...
我很好奇我为什么import
React
即使我没有在render.js
中使用它,因此这个问题。那么,导致Can't find variable: React
文件出现render.js
错误的原因是什么?
答案 0 :(得分:3)
要使用渲染功能,您需要在文件中导入React,因为react会创建您的元素。我建议你浏览一下你编译好的Javascript文件,你会明白我的意思。
我曾经在某个时候面对这个问题,当我看到已编译的JS文件时,我就看到了它是如何工作的。
因此,在您的转换文件中,它将类似于: -
(0, _reactDom.render)(_react2.default.createElement(_Root2.default, { store: store, history: history }), document.getElementById('app'));