@ryujaewan/restate
Version:
React State (`@ryujaewan/restate` is a lightweight library that simplifies state management in React applications. It enables easy sharing and updating of state across multiple components.)
130 lines (91 loc) • 3.26 kB
Markdown
Restate는 React 애플리케이션에서 전역 상태 관리를 간단하고 효율적으로 구현할 수 있는 라이브러리입니다. 복잡한 설정 없이 직관적인 API로 컴포넌트 간 상태 공유가 가능합니다.
- 🚀 **간단한 API** - 복잡한 보일러플레이트 코드 없이 직관적인 사용법
- 🔄 **자동 업데이트** - 상태 변경 시 구독 컴포넌트 자동 리렌더링
- 🎯 **선택적 업데이트** - 다양한 업데이트 전략으로 성능 최적화
- 🧠 **동적 구독** - 컴포넌트가 마운트될 때만 상태 업데이트 구독
- 🔌 **외부 데이터 연동** - 외부 데이터 소스와 쉽게 연결
```bash
npm install @ryujaewan/restate
```
또는
```bash
yarn add @ryujaewan/restate
```
```jsx
import { restate } from '@ryujaewan/restate';
// 전역 상태 생성
const useCounter = restate(0);
// 컴포넌트에서 사용
function Counter() {
const count = useCounter();
return (
<div>
<p>카운트: {count}</p>
<button onClick={() => useCounter.set(count + 1)}>증가</button>
</div>
);
}
```
```jsx
import { restate } from '@ryujaewan/restate';
// 객체 상태 생성
const useUserState = restate(
{ name: '홍길동', age: 30, preferences: { theme: 'dark' } }
);
function UserProfile() {
const user = useUserState();
return (
<div>
<h2>{user.name}</h2>
<p>나이: {user.age}</p>
<p>테마: {user.preferences.theme}</p>
<button onClick={() => useUserState.set({ ...user, age: user.age + 1 })}>
생일 축하!
</button>
</div>
);
}
```
```jsx
import { restate } from '@ryujaewan/restate';
// 웹소켓 연결과 상태 동기화
const useSocketMessages = restate([], ({ setState }) => {
const socket = new WebSocket('wss://example.com/socket');
socket.onmessage = (event) => {
const message = JSON.parse(event.data);
setState(prev => [...prev, message]);
};
// 정리 함수 반환
return () => socket.close();
});
```
```jsx
function SpecificComponent() {
// 이 컴포넌트는 name이 변경될 때만 리렌더링
const user = useUserState((prev, next) => prev.name !== next.name);
return <div>{user.name}</div>;
}
```
전역 상태를 생성합니다.
- `initialValue`: 초기 상태 값
- `updater`: 상태 업데이트 로직을 포함하는 선택적 함수
- `useRestateFn()`: 컴포넌트에서 상태를 구독하는 훅
- `useRestateFn.get()`: 현재 상태 값을 가져오는 함수
- `useRestateFn.set(newValue)`: 상태를 업데이트하는 함수
더 많은 예제는 [GitHub 저장소](https://github.com/ryujaewan123/restate)에서 확인하세요.
MIT
---
Restate로 React 상태 관리의 복잡성을 줄이고, 더 효율적인 애플리케이션을 만들어보세요! 🚀