React 프로젝트를 개발할 때 업데이트 되는 컴포넌트를 줄이기 위해 기능별로 최대한 나누어서 구현하게 되는데 이 때 하위 컴포넌트로 값을 넘겨줘야할 때가 많이 생깁니다.
상위 컴포넌트에서 하위 컴포넌트로 값을 넘겨줄 땐 Props를 사용하면 되지만 하위 컴포넌트에서 Props로 받은 값을 함수를 통해 값을 가공하려고 변경해봐도 화면이 리렌더링 되지 않습니다.
이 때 상위 컴포넌트로 변경할 값을 다시 던져주고 상위 컴포넌트에서 함수를 통해 값 변경 후 다시 하위 컴포넌트로 던져줘야 하는데 이 때 값을 전송하는 방법에 대해 작성해보겠습니다.
구현할 함수를 상위 컴포넌트에서 작성해준 뒤 하위 컴포넌트에 Props로 던져주면 됩니다.
부모 컴포넌트
import { useState } from "react";
import { ChildComponent } from "./child";
const ParentComponent = () =>
{
const [text, _setText] = useState<string>( "hello" );
const getChildDataHandler = ( data :string ) =>
{
if ( data === "hello" )
console.log( text );
};
return <>
<ChildComponent text={text} getChildData={getChildDataHandler} />
</>;
};
자식 컴포넌트
export interface childComponentProps {
text: string;
getChildData: ( _text: string ) => void;
}
export const ChildComponent: React.FC<childComponentProps> = ( { text, getChildData } ) =>
{
const onButtonClickHandler = () =>
{
getChildData && getChildData( text );
};
return <>
<label>{ text }</label>
<button onClick={onButtonClickHandler}></button>
</>;
};
'Front-End > React' 카테고리의 다른 글
JavaScript 비동기 통신 / React-Query vs SWR (0) | 2023.04.30 |
---|---|
[React.ts] 객체 리터럴을 이용한 조건문 줄이기 (0) | 2022.11.04 |
[React] Immer 를 이용한 불변성 관리 (0) | 2022.08.02 |
[React] 주로 사용되는 필수 Reack Hook (0) | 2022.08.02 |
[React] CRA보단 Vite / Vite + React.ts 프로젝트 생성 (0) | 2022.08.02 |