【问题标题】:Check if File or Module Has Been Imported检查文件或模块是否已导入
【发布时间】:2020-01-14 05:45:34
【问题描述】:

有没有办法检查文件或模块是否已被导入。我正在创建一个 React 组件——如果它用于已导入特定包的页面上,我希望它以一种方式运行,如果没有,则以另一种方式运行。

为了清楚起见,“导入”是指import X from 'y'

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

更新

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

【问题讨论】:

  • 你不能只检查if x - 做点什么,else - 做点别的。
  • @DaniyalLukmanov 我不确定我是如何进行检查的。请查看我更新的问题以解释我想要弄清楚的内容。

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


【解决方案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,如果该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
}

希望对你有帮助!!!

【讨论】:

    猜你喜欢
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 2023-03-28
    • 1970-01-01
    • 2012-07-14
    相关资源
    最近更新 更多