React

React 활용 예시(Zustand)

goshek 2024. 9. 3. 14:44
import React from 'react'
import { create } from 'zustand';

/*
    ! Zustand 상태 관리 프로그램(외부 라이브러리)
    : React Hooks를 기반
    >> 최소한의 API를 사용하영 상태를 쉽게 생성하고 접근

    ? Zustand의 장점
    1) 간결성
    : 최소한의 코드로 상태 관리
    2) 유연성
    : 여러 상태 조각을 하나의 저장소에서 결합


    ? Zustand 사용 방법
    1) 설치
    npm i zustand

    2) 사용법
    상태를 단일 저장소인 store에 저장
    +) 해당 저장소를 가져와서 (import) 컴포넌트에 자동으로 업데이트 전달

    # 1. Zustand 예제(폴더/ 파일 단위 분리X)
    * 1. store생성
    : 전역 상태가 담길 저장소
    >> 애플리케이션의 상태를 저장하는 곳
    >> create함수를 사용하여 생성(zustand 라이브러리에 포함)

    >> 애플리케이션의 상태와 상태를 업데이트 하는 함수들이 포함

    State의 타입 선언
    : 카운트 상태 저장
*/
interface CountState{
    count: number;
    increment: ()=> void;
    decrement: ()=> void;
}

// ? crete함수로 스토어 생성
// 스토어명: use+ data명+ Store

// const use데이터store= create<관리할데이터타입>();

// +) create함수는 set함수를 인자로 전달
//  : zustand 스토어의상태를 업데이트하는데 사용

// == 외부의 store공간 ==
export const useCountStore= create<CountState>(set=> ({
    // 상태변경을 하기 전 초기값 설정
    count: 0,
    increment: ()=> set(state=>({count: state.count+1})),
    decrement: ()=> set(state=> ({count: state.count -1}))
}));

// ==외부 컴포넌트==
function Component(){
    const {count, increment, decrement}= useCountStore();
    return(
        <div>
            <p>{count}</p>
            <button onClick={increment}>증가</button>
            <button onClick={decrement}>감소</button>
        </div>
    )
}

export default function Zustand01() {
  return (
    <div>
        <Component />
    </div>
  )
}

'React' 카테고리의 다른 글

React활용 예시(Axios)  (1) 2024.09.03
React 활용 예시(Custom Hook)  (1) 2024.08.30
React 활용 예시(UseReducer)  (0) 2024.08.30
React활용 예시(UseMemo02)  (0) 2024.08.29
React 활용 예시(UseMemo)  (0) 2024.08.29