Реагировать обещание до конца использования State Hook - PullRequest
0 голосов
/ 08 ноября 2019

Я использую контекстную функцию и вызываю функцию в другом js-файле. Но setThreeImdf - это функция useState.

Функция контекста;

     const [threeImdf, setThreeImdf] = useState({});

     const createMap = (ref, width, height) => {
          const display_point = map.venue.features[0].properties.display_point.coordinates;
          const threeImdf = new ThreeImdf(
            ref,
            width,
            height,
            map,
            display_point
          );
          window.addEventListener("resize", () => {
            threeImdf.resize(window.innerWidth, window.innerHeight);
          });
          threeImdf.showLayer([0]);
          setThreeImdf(threeImdf);
        });
      };

Home.js Функция useEffect

const { map, createMap, threeImdf } = useContext(MapContext);

    useEffect( async () => {
        if (!_.isEmpty(map)) {
          createMap(mapRef, window.innerWidth, window.innerHeight);
          const data = threeImdf.getGrouppedObjectsByLayer(currentFloor);
          const layers = threeImdf.getOrdinalsNumber();
          setFloorCount(layers);
          setCategories(data);
        }
      }, []);

Но я запускаю функцию контекста в useEffect, верните мне threeImdfне найдено. Я хотел бы дождаться окончания хука setThreeImdf. Как я могу это сделать?

1 Ответ

0 голосов
/ 08 ноября 2019

Необходимо создать контекст

const Context = React.createContext(MapContext);

Контекст был видим, вам нужно обернуть компонент в:

<Context.Provide>
   //You component
</Context.Provider>
...