[React] 자식 컴포넌트에서 부모 컴포넌트로 데이터 전달하기

2022. 12. 5. 11:20·Front-End/React

State는 부모 → 자식으로 밖에 값을

전달하지 못한다고 배웠습니다.

 

하지만 컴포넌트를 분리했을 때 자식 컴포넌트에서

연산한 데이터를 부모에서 사용하고 싶은 경우가 있습니다.

 

Redux 등 전역 상태관리 라이브러리를 사용하지 않고도

할 수 있는 방법을 찾았습니다.😀

함수를 전달하면 됩니다. 👍

 


📝 자식 컴포넌트 → 부모 컴포넌트

 

⦁ 📑 부모 컴포넌트

//전달 함수
const [audio, setAudio] = useState({})
const getAudio = (x) => {
    setAudio(x)
}

//return 문
...
//state 넘기듯이 함수도 넘길 수 있습니다.
<AudioRecorder getAudio={getAudio}/>

✔ 자식 컴포넌트에 전달할 함수를 선언합니다.

해당 함수를 자식에서 사용하면 결과적으로는 부모 컴포넌트의 State가 변경되어서 활용 가능하게 됩니다🎉

 

 

⦁ 📑 자식 컴포넌트

export default function AudioRecorder( {getAudio} ) {
	...	
    
    const audio = {
      sound : sound,
      file : recording.getURI(),
      duration: getDurationFormatted(status.durationMillis),
      status : status
    }

    //부모에게 객체 전달 가능 !
    getAudio(audio)

✔ ( {getAudio} )를 꼭 작성해야 합니다.

    자주 보던 문법인데 이렇게 쓸 수도 있었네요. 😀

 

 

 

⦁ 📑 결과 화면

 

✔ 자식 컴포넌트가 가지고 있던 audio 객체가

   부모 컴포넌트에서 콘솔로그가 찍힌 모습을 확인할 수 있습니다.

 

 


 


하지만 다음과 같은 코드는 흐름을 파악하기 힘들기 때문에

협업과 유지 보수가 어렵습니다.

맛있는 스파게티 코드😥

 

Redux 등 전역 상태 관리 라이브러리를

같이 공부해 보시는 것을 추천드립니다 !

 


참고 문헌 : 

 

'Front-End > React' 카테고리의 다른 글

[React] 리액트 QR 코드 생성하기 (qrcode.react)  (7) 2024.10.29
[React] Zustand란? 사용하는 이유! (상태 관리 라이브러리, 사용 방법 예시)  (3) 2024.03.14
[React] 리액트 CSS 초기화란? (CSS Reset, 여백 제거)  (2) 2023.10.12
[React & Vue] 조건부 렌더링이란? (사용 예시, 사용 목적)  (2) 2023.07.14
[TypeScript] 타입스크립트란? (개념, 문법 총 정리)  (0) 2023.01.17
'Front-End/React' 카테고리의 다른 글
  • [React] Zustand란? 사용하는 이유! (상태 관리 라이브러리, 사용 방법 예시)
  • [React] 리액트 CSS 초기화란? (CSS Reset, 여백 제거)
  • [React & Vue] 조건부 렌더링이란? (사용 예시, 사용 목적)
  • [TypeScript] 타입스크립트란? (개념, 문법 총 정리)
현기
현기
  • 현기
    현기의 개발블로그
    현기
  • 전체
    오늘
    어제
    • 분류 전체보기 (120)
      • Front-End (39)
        • Next (5)
        • React (8)
        • React Native (11)
        • Flutter (0)
        • Vue (1)
        • JSP (9)
        • HTML, CSS, JS (5)
      • Back-End (16)
        • Node.js (3)
        • Spring (8)
        • Flask (1)
        • AWS (4)
      • DB (5)
        • Oracle (4)
        • MySQL (1)
      • Python (7)
      • Java (27)
        • 자바 이론 (17)
        • 코딩테스트 연습 & 실습 (10)
      • 자료구조 & 알고리즘 (7)
        • 코딩테스트 (6)
        • 알고리즘 (1)
      • 블록체인 (0)
      • 프롬프트 엔지니어링 (0)
      • CS 지식 (5)
      • IT뉴스 (0)
      • 일상 (3)
      • etc (11)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    react
    티스토리챌린지
    오라클
    Java
    IS-A
    자바
    react-native-chart-kit
    자바스크립트
    오블완
    스택
    상속
    JDBC
    그리디
    JSP
    Python
    node.js
    Spring
    REST API
    서블릿
    React Native
    자바 스프링
    쓰레드
    리액트 네이티브
    포스트맨
    파이썬
    next-intl
    DI
    큐
    Express
    React Native Chart
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
현기
[React] 자식 컴포넌트에서 부모 컴포넌트로 데이터 전달하기
상단으로

티스토리툴바