首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reactjs使用默认导出函数动态导入js文件

Reactjs使用默认导出函数动态导入js文件
EN

Stack Overflow用户
提问于 2020-10-05 10:20:01
回答 1查看 543关注 0票数 0

我在MyApp组件中有一个reactjs应用程序,我在顶部使用了一个导入,如下所示:

代码语言:javascript
复制
import { ProvideAuth } from "util/auth.js"; 

在内部,这个文件util/auth.js有以下代码(我在顶部导入另一个js文件,如下所示):

代码语言:javascript
复制
import analytics from "./analytics";

export function ProvideAuth({ children }) {
  .....
}

如何根据cookie值动态地从“./ analytics”导入分析?我做了这段代码,但它不起作用:

代码语言:javascript
复制
function loadLazyModule() {
  console.log("loadLazyModule");
  const _module = React.lazy(() =>
    import("./analytics.js")
  );
  return _module;
}

// Provider hook that creates auth object and handles state
export function ProvideAuth({ children }) {
  if (statisticsCookie == 'Y') {
    console.log("statisticsCookie", statisticsCookie);
    loadLazyModule();
  }
 .....
}

最后,我的analytics.js有以下代码:

代码语言:javascript
复制
// Initialize analytics and plugins
// Documentation: https://getanalytics.io
const analytics = Analytics({
  debug: process.env.NODE_ENV !== "production",
  plugins: [
    googleAnalyticsPlugin({
      trackingId: process.env.NEXT_PUBLIC_GA_TRACKING_ID,
    }),
  ],
});
....

export default analytics;

只有在启用了cookie (值‘Y’)时,我才需要导入该文件:

代码语言:javascript
复制
import analytics from "./analytics";

请救救我!谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-05 10:30:06

你可以这样做。还可以在此之后使用.than().catch()函数。

代码语言:javascript
复制
async function load() {
let say = await import('./say.js');
say.hi(); // Hello!
say.bye(); // Bye!
say.default(); // Module loaded (export default)!

}

或通过导入模块

代码语言:javascript
复制
 let modulePath = prompt("Which module to load?");
 import(modulePath)
 .then(obj => <module object>)
 .catch(err => <loading error,e.g. if no such module>)

这里描述的是https://javascript.info/modules-dynamic-imports

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64206738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档