본문 바로가기
Web/React

Props 속성 값

by zkzk7290 2024. 12. 29.
반응형
리액트 Props :  부모 컴포넌트가 자식 컴포넌트에게 전달하는 값이다. 
 =>   부모 컴포넌트 => 자식 컴포넌트로 값을 전달할 수 있음 
- props  객체입니다 
- 자식컴포넌트에서 props을 전달받았을  경우  props(예시). 데이터로 접근할 수 있음 
- 자식에서는 props는 읽기 전용 입니다 
- 모든 컴포넌트에서 props 수정할 수 없다. 
근데 부모 컴포넌트의 props를 변경하면  그걸  전달받는 자식 컴포넌트에서  리랜더링 된다. 

요기서 랜더링이란? ::  만든 페이지를 사용되는 각각의 브라우저(크롬, 익스플로러, 파이어폭스 등등)에 보이게 하는 것

예외 React.FC?? 뭘까?? 
FC :  Function Component로 함수형 컴포넌트입니다 줄여서 FC 
React + Typescript 조합으로 개발할 때 사용하는 타입 

  {/* 각 컴포넌트에 index.tsx 해당 파일에 있는 groupId값을 props로 전달하기 */}
 //예시 입니다   
 //Manager폴더에 index.tsx파일입니다  
          <ManagerHome  parseToNumGroupId={parseToNumGroupId}/>
        </TabPanel>
        <TabPanel value={1}>
        //각컴포넌트의 parseToNumGroupId props을 전달 합니다
          <Chart  parseToNumGroupId={parseToNumGroupId}/>
        </TabPanel>
        <TabPanel value={2}>
          <Vote  parseToNumGroupId={parseToNumGroupId}/>
        </TabPanel>
        <TabPanel value={3}>
          <BlackList parseToNumGroupId={parseToNumGroupId} />
        </TabPanel>
        <TabPanel value={4}>
          <Report  parseToNumGroupId={parseToNumGroupId}/>
        </TabPanel>

 

자식 컴포넌트 parseToNumGroupId을 전달 받음 

const Chart :React.FC<ChartProps> = ({parseToNumGroupId})  => {
  const [genderChart, setGenderChart] = useState<GetGenderChartResponseDto[]>(
    []
  );
  const [quarterChart, setQuarterChart] = useState<GetQuarterCharResponseDto[]>(
    []
  );
  const { groupId } = useParams();
  const [cookies] = useCookies(["token"]);

  useEffect(() => {
    fetchGenderChart();
    fetchUserChart();
  }, [groupId, cookies.token]);

  const fetchGenderChart = async () => {
    if (cookies.token) {
      try {
        const response = await axios.get(
          `http://localhost:8080/api/v1/user-list/genderChart/${groupId}`,
          {
            headers: {
              Authorization: `Bearer ${cookies.token}`,
            },
            withCredentials: true,
          }
        );
        const responseData = response.data.data;
        setGenderChart(responseData);
        console.log(responseData);
      } catch (error) {
        console.error(error);
      }
    }
  };

  const fetchUserChart = async () => {
    if (cookies.token) {
      try {
        const response = await axios.get(
          `http://localhost:8080/api/v1/user-list/userChart/${groupId}`,
          {
            headers: {
              Authorization: `Bearer ${cookies.token}`,
            },
            withCredentials: true,
          }
        );
        const responseData = response.data.data;
        setQuarterChart(responseData);
        console.log(responseData);
      } catch (error) {
        console.error(error);
      }
    }
  };
  return (
    <div css={AllBox}>
      <div css={GenderChartBox}>
        <h1>성별 차트</h1>
        <GenderChartComponent data={genderChart} />
        <div>
          <div>남성 : 💙</div>
          <div>여성 : 🍎 </div>
        </div>
      </div>

      <div css={QuarterBox}>
        <h1 css={QuartChartName}>분기별 유입율 </h1>
        <QuarterChartComponent data={quarterChart} />
      </div>
    </div>
  );
}
export default Chart;

 

 

반응형

'Web > React' 카테고리의 다른 글

axios개념  (0) 2024.11.04
zustand  (1) 2024.11.03
use-cookie+ Cookie  (0) 2024.11.01
UseEffect  (0) 2024.10.31
Hook-1  (0) 2024.08.31