2.0.1 • Published 9 months ago

@ryujaewan/restate v2.0.1

Weekly downloads
-
License
ISC
Repository
github
Last release
9 months ago

Restate

Restate는 React 애플리케이션에서 전역 상태 관리를 간단하고 효율적으로 구현할 수 있는 라이브러리입니다. 복잡한 설정 없이 직관적인 API로 컴포넌트 간 상태 공유가 가능합니다.

특징

  • 🚀 간단한 API - 복잡한 보일러플레이트 코드 없이 직관적인 사용법
  • 🔄 자동 업데이트 - 상태 변경 시 구독 컴포넌트 자동 리렌더링
  • 🎯 선택적 업데이트 - 다양한 업데이트 전략으로 성능 최적화
  • 🧠 동적 구독 - 컴포넌트가 마운트될 때만 상태 업데이트 구독
  • 🔌 외부 데이터 연동 - 외부 데이터 소스와 쉽게 연결

설치

npm install @ryujaewan/restate

또는

yarn add @ryujaewan/restate

기본 사용법

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>
  );
}

고급 사용법

객체 상태 관리

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>
  );
}

외부 데이터 연동

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();
});

컴포넌트별 업데이트 조건 설정

function SpecificComponent() {
  // 이 컴포넌트는 name이 변경될 때만 리렌더링
  const user = useUserState((prev, next) => prev.name !== next.name);
  
  return <div>{user.name}</div>;
}

API 레퍼런스

restate(initialValue, updater?)

전역 상태를 생성합니다.

  • initialValue: 초기 상태 값
  • updater: 상태 업데이트 로직을 포함하는 선택적 함수

반환된 훅

  • useRestateFn(): 컴포넌트에서 상태를 구독하는 훅
  • useRestateFn.get(): 현재 상태 값을 가져오는 함수
  • useRestateFn.set(newValue): 상태를 업데이트하는 함수

예제 프로젝트

더 많은 예제는 GitHub 저장소에서 확인하세요.

라이선스

MIT


Restate로 React 상태 관리의 복잡성을 줄이고, 더 효율적인 애플리케이션을 만들어보세요! 🚀

2.0.1

9 months ago

2.0.0

9 months ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago