javascript - 使用 React 动态导入文件
问题描述
我正在使用 Adobe After Effects 和 React Lottie 创建动画,并且我有许多由 Bodymovin 扩展生成的 json 文件。我正在以这种方式导入文件:
import * as initial from './white_bird.json';
import * as hoverOn from './white_bird_hover_on.json';
import * as hoverOff from './white_bird_hover_off.json';
但是,当我有例如 6 个看起来相同但仅在导入文件时彼此不同的其他组件时。我怎样才能把这些行写成这样:
const data = {
initial: import * as initial(`./${some_param}.json`),
};
请注意,我必须像 '* as' 一样以另一种方式导入它,这是行不通的
解决方案
您可以使用动态导入:
useEffect(() => {
async loadData() {
const data = await import(`./${some_param}.json`);
setInitial(data);
}
loadData();
}, [])
Promise.all
如果您有多个请求,请使用:
useEffect(() => {
async loadData() {
const [initalData, hoverOnData, hoverOffData] = await Promise.all([
import(`./${bird}.json`),
import(`./${bird}_hover_on.json`),
import(`./${bird}_hover_off.json`)
]);
setInitial(initalData);
setHoverOn(hoverOnData);
setHoverOff(hoverOffData);
}
loadData();
}, [])
推荐阅读
- python - 如何在不运行 for 循环的情况下使类的 iter 方法返回值?
- html - 标签和
在 flex 容器中有不同的高度和对齐方式
- reactjs - Twitter API 获取请求返回 CORS 错误
- c++ - OpenMP 以原子方式更新数组值
- uart - MSP430FR5994 Launchpad UART 参考设计不工作
- visual-studio-2019 - 使用 Visual Studio 2019 构建的 EXE 出现“DLL 入口点”错误,但将 EXE 列为 DLL?
- spring-boot - Spring Boot 在应用程序启动时抛出空指针异常
- node.js - Node.js:使用 YouTube 数据 API 设置视频标题和描述
- javascript - 为什么浏览器会自动更改日期格式?
- c++ - 多维向量的意外重新分配