본문 바로가기
Front-end/React

Zustand

by 세졍 2024. 5. 1.

Zustand란?

: react의 상태관리 라이브러리

 

Zustand 사용법

1.설치 

npm install zustand

 

2. store 생성하기

store.js 파일에

import { create } from 'zustand'

const useStore = create((set) => ({
  bears: 0,
  increasePopulation: () => set((state) => ({ bears: state.bears + 1 })),
  removeAllBears: () => set({ bears: 0 }),
  updateBears: (newBears) => set({ bears: newBears }),
}))

 

3. store.js import 해서 사용하기

function BearCounter() {
  const bears = useStore((state) => state.bears)
  return <h1>{bears} around here...</h1>
}

function Controls() {
  const increasePopulation = useStore((state) => state.increasePopulation)
  return <button onClick={increasePopulation}>one up</button>
}

 

 

내가직접사용하기

 

npm i zustand

src폴더에서 store폴더생성

store에서 필요한 이름의 store.js생성

import { create } from 'zustand'

const useStore = create(set => ({
  cnt : 0,                                                                         # 초기값세팅
  plus : () => set( state => ({ cnt: state.cnt + 1})),          # 초기값을 1증가시키는 함수
  remove : () => set({ cnt : 0})                                        # 초기값을 0으로 만드는 함수

}))

export default useStore

 

다른파일에서 사용하기

import useStore from "../store/store"
 
 
export default function MainPage (){
  const { cnt,plus,remove} = useStore()      
 
  return(
    <div>
      {cnt}
      <button onClick={plus}>증가</button>
      <button onClick={remove}>리셋</button>
    </div>
  )
}
 
 
 

 

const { cnt,plus,remove} = useStore()      는   const { cnt,plus,remove} = useStore(state =>state) 와동일 

const cnt = useStore(state => state.cnt)
const plus = useStore(state => state.plus)
const remove = useStore(state => state.remove)
 
 
const pp = useStore(state=>state.cnt)           변수명 달라도됨 그러면 밑에서 {pp} 로사용
const plus = useStore(state => state.plus)
const remove = useStore(state => state.remove)