使用 React 动态导入文件

Fre*_*e09 3 javascript reactjs bodymovin lottie

我正在使用 Adob​​e 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';
Run Code Online (Sandbox Code Playgroud)

但是,当我有 6 个其他组件时,它们看起来相同,但仅在导入的文件上彼此不同。我怎样才能把这些行写在上面,如下所示:

const data = {
    initial: import * as initial(`./${some_param}.json`),
  };
Run Code Online (Sandbox Code Playgroud)

请注意,我必须像“* as”一样导入它,以另一种方式这是行不通的

Fra*_*ion 8

您可以使用动态导入

useEffect(() => {
  async loadData() {
    const data = await import(`./${some_param}.json`);
    setInitial(data);
  }

  loadData();
}, [])
Run Code Online (Sandbox Code Playgroud)

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();
}, [])
Run Code Online (Sandbox Code Playgroud)