需要反应原生的模块

van*_*ren 4 javascript node.js ios reactjs react-native

我在一个反应​​原生项目中遇到了问题.我正在尝试执行一般要求文件,我导出所有模块.之后,我想只需要我的"require.js"文件,以避免在每个文件中需要('../../ ModuleName')这样的调用.

我有4个文件:

index.ios.js
/app/home.js
/app/MyView.js
/app/require.js
Run Code Online (Sandbox Code Playgroud)

require.js:

module.exports = {

    Home: require('./home'),
    MyView: require('./MyView')

}
Run Code Online (Sandbox Code Playgroud)

在index.ios.js(他的模块Home和MyView正确获取importet)

'use strict';

var React = require('react-native');
var {
    AppRegistry,
    StyleSheet,
    Text,
    View,
} = React;

var {
    Home,
    MyView
} = require('./app/require');

class Test_require extends React.Component {

    render() {

        return(
            <Home />
        );
    }

}



AppRegistry.registerComponent('Test_require', () => Test_require);
Run Code Online (Sandbox Code Playgroud)

Home.js(模块MyView没有得到importet)

'use strict';

var React = require('react-native');

var {
    View,
    Text
} = React;

var {
    MyView
} = require('./require');

class Home extends React.Component {

    render() {
        console.log(MyView);
        return(
            <MyView />
        );
    }

}

module.exports = Home;
Run Code Online (Sandbox Code Playgroud)

在Home.js中,MyView变量是"未定义的".如果我想要一个模块中的模块,它已经被导入另一个文件,那么该变量是未定义的.

你们有什么线索为什么我能做到这一点还是有更好的解决方案来解决我的问题?谢谢你的任何线索

van*_*ren 5

所以我发布自己的答案,以防其他人遇到同样的问题.

在这样的语法中,所需的文件将同步加载.因此,如果组件的构建比要求文件更快,则会出现此问题.要么在需要时使组件加载延迟,要么像这样使用es6导入语法(异步导入加载):

import React from 'react-native'
Run Code Online (Sandbox Code Playgroud)

干杯!