检查文件或模块是否已导入

时间:2019-09-12 10:53:26

标签: javascript reactjs ecmascript-6 es6-modules react-component

是否可以检查文件或模块是否已导入。我正在创建一个React组件-如果要在已导入特定软件包的页面上使用它,我希望它以一种方式起作用,否则就以另一种方式起作用。

请注意,“导入”是指import X from 'y'

这可能吗?如果是这样,我该怎么办?

更新

我要检查的文件是Formik库中的Formik React组件。也就是说,如果他导入了formik(import { Formik } from 'formik'),那么我想做一件事,否则,我想做另一件事。如何检查组件是否已导入?

1 个答案:

答案 0 :(得分:1)

您可以使用Dynamic imports:-

示例-

import React from "react";
import "./styles.css";

import("react-dom")
.then(ReactDOM => ReactDOM.render(<App />, rootElement));

function App() {
  return (
    <div className="App">
      <h2>Dynamic import</h2>
    </div>
  );
}

const rootElement = document.getElementById("root");

此处import('react-dom')返回promise,如果该承诺得以解决,则该程序包可用,您可以在回调函数中使用该模块。

或者您也可以尝试-Reference

if(__webpack_modules__[require.resolveWeak("mod1")]) {
  // do something when mod1 is available
}
if(require.cache[require.resolveWeak("mod1")]) {
  // do something when mod1 was loaded before
}

希望有帮助!