React Global State - 조언을 구합니다

커뮤니티 안녕하세요!

마침내 Context API 및 기타 라이브러리를 사용하는 데 지쳐서 내 웹 앱의 전역 상태를 컨트롤러로 직접 해결하기로 결정했습니다.

여기 내가 지금 가지고 있고 잘 작동하는 것 같습니다.
이 구현을 사용하는 문제에 대한 피드백이나 제안을 얻을 수 있기를 바랍니다.

모두 감사합니다!



import { useState, Dispatch, SetStateAction, useEffect, useId } from "react";

type Setter<T> = Dispatch<SetStateAction<T>> | ((value: T) => void)

/**
 * Create a pod with default value
 * @param value 
 * @returns usePod, value, updater
 */
export function createPod<T>(value: T) {
    const pod = {
        value: value
    };

    const setters: { [key in string]: Setter<T> } = {};

    const updater = (value: T) => {
        pod.value = value;
        for (let key in setters) {
            if (!setters.hasOwnProperty(key)) return;
            setters[key](value);
        }
    }

    const usePod = () => {
        const [value, setValue] = useState(pod.value);
        const key = useId()
        useEffect(() => {
            setters[key] = setValue;
            return () => {
                delete setters[key];
            }
        }, [])

        return [value, updater] as const
    }
    return [usePod, pod.value, updater] as const;
}

좋은 웹페이지 즐겨찾기