Как заставить реагирующий маршрутизатор заменить компонент только после асинхронной загрузки соответствующего маршрута? - PullRequest
0 голосов
/ 16 декабря 2018

Итак, вот ситуация - когда нажата Link, запускается панель nprogress, и я хочу, чтобы реагирующий маршрутизатор заменял текущий компонент только на соответствующий маршрут после завершения асинхронной загрузки ... как в Instagram ...

enter image description here

Но я только получаю это -

enter image description here

Вот мой HOC для асинхронной загрузки компонента -

import React, { useEffect, useState } from "react";
import nprogress from "nprogress";
import "nprogress/nprogress.css";

export default importComponent => props => {
  const [loadedComponent, setComponent] = useState(null);

  // this works like componentwillMount
  if (!nprogress.isStarted()) nprogress.start();

  if (loadedComponent) nprogress.done();

  useEffect(() => {
    let mounted = true;

    mounted &&
      importComponent().then(
        ({ default: C }) => mounted && setComponent(<C {...props} />)
      );

    // componentUnMount
    return () => (mounted = false);
  }, []);

  // return the loaded component
  const Component = loadedComponent || <div style={{ flexGrow: 1 }}>..</div>;
  return Component;
};

Я не нашел решения этой проблемы нигде в Интернете ... поэтому я задаю этот вопрос здесь в stackoverflow.Я надеюсь, что кто-то здесь может решить эту проблему.

...