为函数而不是组件响应延迟加载
React lazy load for a function, not a component
我正在开发 React v16 应用程序,需要加载一个繁重的 (IMO) 库以用于 xlsx 数据导出。
我正在使用函数 components/hooks。
我了解并使用 <Suspense />
组件和 lazy
延迟加载模块。但由于此项不是组件,它只是一个库函数,我需要 运行 和 onClick 事件,我不能使用 lazy/suspense.
如何只在需要时延迟加载此功能? (writeXlsxFile)
import React, { useEffect, useState } from "react";
import { connect } from "react-redux";
//...
import writeXlsxFile from "write-excel-file";
//...
const fileCreate = async () => {
await writeXlsxFile(exportData, {
schema,
fileName: `file.xlsx`,
});
};
return(//...
JavaScript
(通过关联,React
)支持 Dynamic Imports.
在任何情况下,您都可以使用以下代码延迟加载您的函数:
const fileCreate = async () => {
const writeXlsxFile = await import ('write-excel-file')
void await writeXlsxFile(exportData, {
schema,
fileName: `file.xlsx`,
});
}
-- 2021-11-10 更新
此 解释了使用 default
导入时的情况。您必须在模块中调用 default
函数。
所以,
const fileCreate = async () => {
const {default: writeXlsxFile} = await import ('write-excel-file')
void await writeXlsxFile(exportData, {
schema,
fileName: `file.xlsx`,
});
}
我正在开发 React v16 应用程序,需要加载一个繁重的 (IMO) 库以用于 xlsx 数据导出。
我正在使用函数 components/hooks。
我了解并使用 <Suspense />
组件和 lazy
延迟加载模块。但由于此项不是组件,它只是一个库函数,我需要 运行 和 onClick 事件,我不能使用 lazy/suspense.
如何只在需要时延迟加载此功能? (writeXlsxFile)
import React, { useEffect, useState } from "react";
import { connect } from "react-redux";
//...
import writeXlsxFile from "write-excel-file";
//...
const fileCreate = async () => {
await writeXlsxFile(exportData, {
schema,
fileName: `file.xlsx`,
});
};
return(//...
JavaScript
(通过关联,React
)支持 Dynamic Imports.
在任何情况下,您都可以使用以下代码延迟加载您的函数:
const fileCreate = async () => {
const writeXlsxFile = await import ('write-excel-file')
void await writeXlsxFile(exportData, {
schema,
fileName: `file.xlsx`,
});
}
-- 2021-11-10 更新
此 default
导入时的情况。您必须在模块中调用 default
函数。
所以,
const fileCreate = async () => {
const {default: writeXlsxFile} = await import ('write-excel-file')
void await writeXlsxFile(exportData, {
schema,
fileName: `file.xlsx`,
});
}