Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- AntDesign
- mosquitto.conf
- setInterval 정지
- pm2 시작
- mosquitto
- pm2 상태 확인
- setInterval 중지
- pm2 설치
- c# datagridview 데이터 넣기
- DatePicker
- mySQL_Replication
- 데이터테이블 데이터 넣기
- setInterval clear
- 1883
- datagridview 직접입력
- 공인IP
- invalid data
- DataGridView 직접 입력
- Replication
- pm2 확인
- html #select #option #multiple
- setInterval 외부 정지
- allow_anonymouse
- timepicker
- pm2
- listener 1883
- 맥 어드레스
- transfer
- 서버동기화
- map이 undefined가 뜰 때
Archives
- Today
- Total
개발 노트
Javascript Library - Zustand 본문
상태관리 라이브러리는 참 많이있다.
Redux가 상태관리 라이브러리의 시초격(Flux 패턴)이라 할 수 있다.
그렇기 때문에 인기가 많지만 오늘 날 Redux를 기피하는 이유도 있다.
그것은 바로 보일러 플레이트 코드 때문이다.
Redx Toolkit이 이러한 점 등을 극복하고 있고 계속해서 업데이트를 하고는 있지만 여전히 보일러 플레이트가 존재한다.
**
보일러 플레이트 = 반복해서 사용하는 텍스트를 의미 = 변화없이 여러군대에서 반복되는 코드,
최소한의 변경으로 재사용 할 수 있는 코드 또한 보일러 플레이트 코드라고한다.
Flux 패턴 = 단방향의 흐름으로 애플리케이션을 만드는 아키텍처
**
그렇기에 최소한의 코드로 상태를 관리하는 방법을 구현해넨 라이브러리가 zustand이다.
zustand의 장점은 굉장히 쉽다.
보일러 플레이트가 없다 싶을 정도로 간단한 코드만 필요로 하고, 초기 설정 코드가 아주 간결하다.
redux devtools를 사용할 수 있어서 debugging을 하는데도 아주 용이하다.
Provider로 감싸주지 않아도 된다.
src/store.js
import create from "zustand";
const useStore = create((set) => ({
bears: 0,
increase: () => set((state) => ({ bears: state.bears + 1 })),
removeAllBears: () => set({ bears: 0 }),
}));
export default useStore;
create = state 보관함 하나 만들어주는 함수, 여러개 만들어도된다.
ajax요청도 create안에서 해도 된다.
set((state) => ({ bears : state.bears +1 })) <-state 변경하는 법 store안에 함수로 저장해놓자.
src/App.js
const App = () => {
const { bears, increase, removeAllBears } = useStore((state) => state);
return (
<div>
<h1>{bears} around here...</h1>
<button onClick={increase}>up</button>
<button onClick={removeAllBears}>remove all</button>
</div>
);
};
export default App;
const {state 명} = useStore(); 로 불러와서 사용하면된다.
'JavaScript' 카테고리의 다른 글
nullish 병합 연산자 '??' (0) | 2022.12.07 |
---|---|
Js - trim() (0) | 2022.11.30 |
JavaScript Library - Redux (0) | 2022.11.15 |
Javascript - LocalStorage (0) | 2022.11.11 |
자바스크립트 fetch,callback,promise,async 게시글 (0) | 2022.01.10 |