React Global State - 조언을 구합니다
5664 단어 hookjavascripttypescriptreact
마침내 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;
}
Reference
이 문제에 관하여(React Global State - 조언을 구합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/anxiny/react-global-state-looking-for-advise-147k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)