从另一个文件反应本机导入功能

时间:2018-11-03 04:45:05

标签: javascript reactjs react-native import

我想知道是否要从另一个文件导入功能,是否也要导入功能文件中导入的所有文件?例如:

auth.js

import React from 'react';
import { AsyncStorage, View, Text, ScrollView, ... } from 'react-native';
import ModuleA from './modules/ModuleA';
import ModuleB from './modules/ModuleB';
import Module99 from './modules/Module99;

export const function1 = () => {
    {/* some function using ModuleA */}
}

export const function2 = (param) => {
    if(something)
        {/* some function using Module99 */}
    else
        {/* some function using ModuleB */}
}

Screen.js

import React from 'react';
import { function2 } from '../auth';

export default class Screen extends React.Component {
    {/* use function2 in some function or render */
}

我的问题是,当我从auth.js导入function2时,是否要导入auth.js中导入的所有模块和其他文件?或者我只是导入要由function2使用的模块。

此外,function2将根据参数使用不同的模块,方法是从Screen调用function2,Screen是否还会导入所有模块,或者仅导入Module99和moduleB,或者仅导入if else语句中的特定模块?

我已经阅读了很多有关如何在本机反应中导入的文档,但是仍然无法真正理解流程。 谢谢您的回答。

1 个答案:

答案 0 :(得分:1)

通过执行import function2 from '../auth';,您将什么都不导入,因为它不是默认导出。同样,不会自动将任何模块导入screen.js中。 如果还需要在screen.js

中使用,则必须显式导入模块(ModuleA,ModuleB等)。

如果您想在function2中使用screen.js,则需要这样导入

import { function2 } from '../auth';

您还可以使用import * as fromAuth from '../auth';导入所有

用法:fromAuth.function2()

导入不带大括号{}用于导入默认值。(已使用默认keyword导出)

有4种出口类型:

  • 命名出口(每个模块几个)
  • 默认导出(每个模块一个)
  • 混合命名和默认导出
  • 循环依赖

以下是MDN的一些导入示例

import defaultExport from "module-name";
import * as name from "module-name";
import { export } from "module-name";
import { export as alias } from "module-name";
import { export1 , export2 } from "module-name";

查找更多详细信息here