找不到变量React - 即使它没有在文件中使用

时间:2016-09-23 05:36:10

标签: javascript reactjs react-native

我的反应原生项目中出现“无法找到变量: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错误的原因是什么?

1 个答案:

答案 0 :(得分:3)

要使用渲染功能,您需要在文件中导入React,因为react会创建您的元素。我建议你浏览一下你编译好的Javascript文件,你会明白我的意思。

我曾经在某个时候面对这个问题,当我看到已编译的JS文件时,我就看到了它是如何工作的。

因此,在您的转换文件中,它将类似于: -

(0, _reactDom.render)(_react2.default.createElement(_Root2.default, { store: store, history: history }), document.getElementById('app'));