Redux

Redux 사용 방법

 

Redux 를 사용하는 이유 )

: props 드릴링을 방지하기 위하여 사용! Redux 를 사용하면 props 를 사용하지 않고도 State 공유가 가능하다!

 

redux 를 사용하지 않고 props 를 넘기는 경우 props 가 필요한 하위 컴포넌트까지 최초 선언된 컴포넌트 부터 하위의 하위 컴포넌트까지 이어 받아 전달해야하기 때문에 props 의 복잡도가 증가하며 유지보수가 힘들어진다.

 

또한 최하위 컴포넌트에서 props 의 State 를 변경하게 되면 해당 State 를 하위로 전달하기 위해 props 로 받아온 컴포넌트까지 불필요한 재렌더링 문제가 발생한다.

 

function App() {
  const [user, setUser] = useState("Alice");
  console.log("🔄 App 렌더링");

  return <Parent user={user} setUser={setUser} />;
}

function Parent({ user, setUser }) {
  console.log("🔄 Parent 렌더링");
  return <Child user={user} setUser={setUser} />;
}

function Child({ user, setUser }) {
  console.log("🔄 Child 렌더링");
  return <GrandChild user={user} setUser={setUser} />;
}

function GrandChild({ user, setUser }) {
  console.log("🔄 GrandChild 렌더링");
  return (
    <div>
      <h1>Hello, {user}!</h1>
      <button onClick={() => setUser("Bob")}>Change User</button>
    </div>
  );
}

redux 를 사용하지 않은 경우

GrandChild 컴포넌트에서 전달받은 user props 가 변경될 시 모든 컴포넌트에서 렌더링 콘솔이 출력된다.

 

 

 

 

 

1. Redux 설치

더보기

1. Redux 는 React 버전 18.1.0 이상부터 제대로 사용할 수 있으므로 package.json 에서 react 와 react-dom 버전을 확인한다.

버전이 18.1.0 버전 이상인지 확인

 

 

 

2. Redux 설치

npm install @reduxjs/toolkit@1.8.1 react-redux

 터미널을 켜서 프로젝트 디렉토리로 접속한 뒤 위 명령어를 입력하여 redux 를 설치

 

 

 

 

 

2. Redux 세팅 및 Redux State 사용 방법

더보기

1. Store.js 작성

Store.js 작성

 

 

 

2. Provider 와 생성한 store 를 index.js 에서 import 하여 전체 컴포넌트를 Provider 컴포넌트로 감싸준 뒤 store 를 설정

index.js 작성

 

 

 

 3. store.js 에 선언하고 싶은 State 를 생성한 뒤 reducer 에 등록 ( Redux 에 State 선언 )

State 선언

 

 

 

 4. 해당 State 를 필요한 곳에서 불러와서 사용하기

useSelector 를 사용하여 store.js 에서 선언한 모든 State 값을 변수로 담아온 뒤 store.js 에서 선언한 name 키 값으로 데이터를 추출하여 사용한다.

 

정상적으로 State 내부 값이 추출되어 표현되는 모습

 

 

 

5. 여러 State 를 사용하는 경우

State 를 두 개 선언한 뒤 꺼내서 사용
출력된 값

 

 

 

 

 

3. Redux State 변경 방법

더보기

1. 변경 함수를 store.js 에 선언한 뒤 export

changeName 함수를 선언하고 export, 매개변수 a 의 값을 전달 받아 initialState 의 값을 a 매개 변수의 실제 값(a.payload)으로 변경하여 저장 state 변수에는 기존의 값인 '안녕하세요!' 문자열이 담겨있음

 

 

 

2. 변경할 컴포넌트에서 useDispatch 함수를 사용하여 store.js 의 State 데이터의 변경을 요청하여 사용

useDispatch 를 사용하여 변경 함수의 실행을 요청하여 State 의 내부 값을 변경한다. 이때 함수에 매개변수를 전달하여 변경할 수 있다.

 

State 값이 변경되어 잘 출력되는 모습

 

 

 

 

 

3. State 변경 함수를 여러개 선언하여 사용하기

함수를 상황에 맞게 여러개 설정 및 export

 

함수를 사용하는 곳에서 각각 다른 함수를 호출하여 dispatch 를 통해 함수 실행을 요청

 

State 변경 함수들이 잘 작동하는 모습

 

 

 

 

 

Redux 를 사용할때 유의할 점

 

1. State 변경함수는 직접 호출하는 것이 아닌 useDispatch 를 사용해 호출하는 형태로 사용해야 한다.

2. State 를 변경할때 매개변수를 전달하여 사용하는 경우 매개변수를 꼭 payload 함수를 사용해 해당 매개변수의 값을 꺼내와서 사용해야 한다.

3. js 파일을 분리하여 State 를 여러 파일에 분리하여 사용할 수 있다.

 

 

 

 

 

728x90
728x90

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

[React] React Component  (0) 2024.07.19
[React] useState  (0) 2024.07.19

 

 

React Component 란?

React 컴포넌트는 페이지에 렌더링할 React 엘리먼트를 반환하는 작고 재사용 가능한 코드 조각입니다. 가장 간단한 React 컴포넌트는 React 엘리먼트를 반환하는 일반 JavaScript 함수

( 함수 뿐만 아니라 class 로도 컴포넌트를 작성할 수 있다 )

 

Component 규약

1. 컴포넌트 함수의 첫 글자는 대문자로 시작한다.

컴포넌트 변수명은 대문자로 시작

 

2. 컴포넌트의 리턴 값은 최상단의 하나의 태그만을 갖는다

병렬의 태그를 리턴할 수 없다

 

 

컴포넌트를 사용하면 HTML 요소들을 더욱 편리하게 관리할 수 있으며 useState 와 useEffet 를 사용하여 동적인 화면을 구성할 수 있다.

728x90

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

[React] Redux  (0) 2025.02.01
[React] useState  (0) 2024.07.19

 

 

useState 란?

리엑트의 useState 는 함수형 컴포넌트에서 상태를 관리하기 위한 Hook 중 하나

 

 

1. useState 를 import

import { useState } from 'react';
// useState 를 사용하기 위해선 react 에서 제공하는 useState 를 import!!

 

2. State 변수를 선언 및 사용

import { useState } from 'react';

function Example() {
	// like 는 사용 변수, setLike 는 State 변경 함수
	let [like, setLike] = useState(0);

	return (
            <div>
                <p onClick = { () => {
                        setLike(like + 1); // useState 변경 함수 사용하여 값을 변경
                }}>좋아요👍🏻 {like}</p> // useState 변수 사용
            </div>
    	);
}

 

useState 변수를 사용해 저장된 State 값을 꺼내서 사용하고, 변경 함수를 사용하여 State 에 저장된 값을 변경한다.

useState 는 component 를 띄우거나 띄우지 않거나 등 상태를 변경하는데 사용된다.

728x90

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

[React] Redux  (0) 2025.02.01
[React] React Component  (0) 2024.07.19

+ Recent posts