reactjs - 反应惰性递归导入
问题描述
我有需要从动态文件夹加载组件的要求。例如,我在组件中有以下文件夹
components
-default
-component-one
-component-two
-component-three
-custom
-component-three
假设如果componentFolder state
设置为custom
文件夹,那么它应该从.custom folder
如果没有找到任何组件,custom folder
那么它应该从default
文件夹加载。所以我的问题是,我们可以递归导入吗?
function App() {
const [componentFolder, setComponentFolder] = React.useState("default")
const Home = React.lazy(() => import("./components/" +componentFolder+ "/Home"));
return (
<div className="App">
<Suspense fallback="laoding">
<Home></Home>
</Suspense>
</div>
);
}
以下链接与我询问的要求相同 如何检查reactjs中是否存在特定文件
解决方案
如果您使用的是 Webpack,那么您可以使用require.context动态加载模块:
import React, { Suspense } from "react";
const load = async (path, file) => {
const defaultPath = "default";
const files = require.context("./components", true, /\.js$/);
try {
return files(`./${path}/${file}.js`);
} catch (err) {
return files(`./${defaultPath}/${file}.js`);
}
};
export default function App() {
const [componentFolder, setComponentFolder] = React.useState("default");
const Home = React.lazy(() => load(componentFolder, "Home"));
return (
<div className="App">
<Suspense fallback="loading">
<Home />
</Suspense>
</div>
);
}
推荐阅读
- php - 将桌子与 foreach 并排放置
- mysql - 如何查询工作中有字母(例如K)且薪水大于某个数字的姓名
- python - 我怎样才能总结一天的时间戳?
- javascript - 如何将源转换为我的资产 img ?角
- angular - 删除查询参数后如何防止滚动到顶部?
- wiki - 如何在 cytoscape 中打开 wikipathway(作为通路)?
- javascript - 如何在render()reactjs中定义useState变量
- objective-c - 如何画一条简单的直线?
- code-signing - 带有标准代码签名证书的智能屏幕过滤器
- python - Python pandas 左连接导致空值?