카테고리 없음

[React / Router] Outlet으로 props 전달하기 (feat. useOutletContext)

yoonjong Park 2022. 12. 26.

useOutletContext로 받아서 처리하는 방식을 설명한다.

URL을 통해 전달하는 방식이면, useParam을 써서 처리하는 방식도 있겠지만, props를 다른 것을 전달할 때도 있으니까,

child에게 props 전달할 때는 아래 방식이 더 명확한 것 같다.

1. parent

...
  <Outlet context={{ coinID }} />  <-- {{ }} 형식으로 전달해야 함.
...

2. child

import React from "react";
import { useQuery } from "react-query";
import { useOutletContext, useParams } from "react-router-dom";
import { getCoinHistory } from "APIs/get/getCoin";

interface ChartProps {
  coinID: string;
}

const Chart = () => {
  const { coinID } = useOutletContext<ChartProps>();  // 이 부분만 확인하면 된다.

  const { isLoading, data } = useQuery(["ohlcv", coinID], () =>
    getCoinHistory(coinID)
  );

  return isLoading ? <h1>loading</h1> : <h1>Chart</h1>;
};

export default Chart;

JS환경에서는 제네릭을 없애면 된다.

 

댓글