inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

타입스크립트로 배우는 리액트(React.js) : 기초부터 최신 기술까지 완벽하게

상태 끌어올리기

67강 상태업데이트 강의 중 궁금한 점

91

모카

작성한 질문수 2

0

 

import FirstCount from "./firstCount";
import SecondCount from "./secondCount";
import { useState } from "react";

export default function Main() {
  const [count, setCount] = useState(0);

  const handleSetCount = () => {
    setCount((prev: number) => prev + 1);
  };

  return (
    <>
      <h1>Main Component</h1>

      <FirstCount count={count} setCount={handleSetCount} />
      <SecondCount count={count} setCount={handleSetCount} />
    </>
  );
}

 

import type { MouseEventHandler } from "react";

interface FirstCountProps {
  count: number;
  setCount: MouseEventHandler<HTMLButtonElement>;
}

export default function FirstCount({ count, setCount }: FirstCountProps) {
  return (
    <>
      <h1>firstCount Component</h1>
      {count}
      <button onClick={setCount}>increase</button>
    </>
  );
}

 

import type React from "react";

interface SecondCountProps {
  count: number;
  setCount: React.MouseEventHandler<HTMLButtonElement>;
}

export default function SecondCount({ count, setCount }: SecondCountProps) {
  return (
    <>
      <h1>secondCount Component</h1>
      {count}
      <button onClick={setCount}>increase</button>
    </>
  );
}

 

맨 위에 코드가 부모컴포넌트인데 부모컴포넌트에서 증가 함수를 정의하고 그 아래에 props로 내려주는 패턴은 잘 쓰이지 않는 패턴인가요?

 

강의에서는 각 자식 컴포넌트에서 카운트 증가 로직이 있어서 중복되는거 같아요

 

그래서 부모에 하나로 정의하고 props로 내려주었는데 어느게 맞는 패턴인가요?

react react-router redux-toolkit zustand react.js

답변 3

1

Codingbear

Prop Drilling 을 배우셨나요? 부모 컴포넌트에서 자식 컴포넌트로 props를 통해 데이터를 전달하는 과정에서 데이터가 필요치 않은 중간 컴포넌트들도 해당 props를 전달 받는 패턴인데.. 좋은 패턴은 아니죠.. 그래서 가깝게는 Context API를 사용하는 방법을 배울 꺼구요.
좀 더 들어가면 커스텀 훅, 상태관리 라이브러리인 redux, zustand 사용할 겁니다.

0

수코딩

안녕하세요.

우선 작성자님이 질문하신 코드의 패턴을 [Props Driling] 패턴이라고 합니다.

부모가 정의한 상태를 자식에게 내려주어서 공유하는 방식입니다.

대부분 이 방식을 평가할 때 흔히 '좋다, 나쁘다'로 이분법화해서 평가하려 합니다.

하지만 props driling 패턴은 리액트에서 가장 쉽고 흔하게 등장하는 패턴이며

상황에 따라서는 매우 좋은 방법입니다.

강의를 진행하시다보면, Props Driling을 대체할 수 있는 여러가지 방법을 더 배우실텐데

결국 다 배우시고 나서 본인 상황에서 본인이 가장 쓰기 편한 방법으로 골라서 사용하시면 됩니다.

감사합니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. dsa02070님.

부모 컴포넌트에서 상태 업데이트 함수를 정의하고, 이를 자식 컴포넌트로 props를 통해 내려주는 패턴은 많이 사용되는 패턴입니다. 이는 상태 관리와 로직의 일관성을 유지할 수 있게 해주며, 특히 상태가 여러 컴포넌트에 걸쳐 공유될 때 매우 유용합니다.

부모에서 상태 업데이트 함수를 내려주는 장점:

  1. 일관된 상태 관리: 상태 변경 로직을 부모에 집중시켜, 여러 자식 컴포넌트가 동일한 상태를 공유하고 일관된 방식으로 업데이트할 수 있습니다.

  2. 코드 중복 제거: 여러 자식 컴포넌트가 동일한 로직을 필요로 할 때, 부모 컴포넌트에서 한 번만 정의해 공유할 수 있어 코드 중복을 줄일 수 있습니다.

  3. 유지보수 용이성: 모든 상태 변경 로직이 한 곳에 모여 있어, 나중에 로직을 수정할 때 더 쉽게 관리할 수 있습니다.

반면, 자식 컴포넌트 각각에서 상태 변경 로직을 갖는 경우 특정 컴포넌트의 구체적 요구에 맞춰 커스터마이징할 수 있는 유연성을 제공합니다. 그러나 이는 코드 중복을 초래할 수 있으며, 상태가 여러 컴포넌트에 걸쳐 공유될 때는 적합하지 않을 수 있습니다.

질문하신 내용을 더 깊이 있게 이해할 수 있는 참고 링크를 제공합니다:
- 리액트에서 상태와 props를 효율적으로 사용하는 방법

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

상태(State) 가 "시간이 지남~" 에 대해 질문 있습니다.

0

34

2

import {} 중괄호 차이점

0

38

2

[ 문의]몽고DB connect 의 건

0

47

2

제공되는 react_code.zip 중에 ..

0

47

2

커리큘럼 비활성화

0

46

2

설명하시는 개념들을 잘 모르겠습니다.

0

43

2

이해가 절반 정도 되는데요.

0

56

1

styled-components(전역)

0

56

1

cloudinary 관련

0

71

3

useOptimistic 실전-1 useState

0

87

2

discord 초대장 갱신이 필요한거같습니다.

0

83

1

할일 관리 앱(메모이제이션)

0

99

2

Web 플랫폼 등록

0

140

2

함수 정의 기준

0

87

2

fetch는 사용되는가

0

88

2

전역상태 관리 선택 기준

0

109

2

tailwind css는 언제 사용되는가 또 다른 css와의 차이

0

210

2

카카오 web플랫폼 등록

0

193

2

컴포넌트 그리고 폴더 구조에 대해

0

78

2

152강 보는중입니다. 초시계부분이구요. 넘버가 timeout을 받을수없다는 에러가 나오고 있어요

0

52

1

폼테그 다른 태그를 하나의 상태 객체로 묶기

0

55

2

class를 className으로 전부 수정하실 때

0

49

2

JWT에 대한 개념도 학습할 수 있나요?

0

74

2

수업자료 다운로드

0

61

2