useState 후크가 게으른 초기 상태 함수가 동기식이어야 하는지 확인해야 합니다.
5152 단어 react
useState
후크에 비동기 함수를 전달하여 상태를 지연 초기화할 수 있습니다. 그러나 이것은 정확하지 않은 것 같습니다. 상태는 JavaScript 약속이 될 것입니다.const [state] = useState(async () => 'a');
console.log(state); // "state" is a promise.
따라서 ReactJS
useState
후크는 이 함수가 동기식인지 확인하기 위해 유효성을 검사해야 한다고 생각합니다.이 같은:
const syncCallback = () => 'a';
const asyncCallback = async () => 'b';
const AsyncFunction = (async () => { }).constructor;
function isAsync(fn: Function) {
return fn instanceof AsyncFunction;
}
function useState<S>(initialState: S | (() => S)) {
if (typeof initialState === 'function' && isAsync(initialState)) throw new Error('initial state function must be synchronous.')
if (initialState instanceof Function) {
return initialState();
}
return initialState
}
const state1 = useState(syncCallback); // correct usage
console.log('state1: ', state1);
const state2 = useState(asyncCallback); // Only allow synchronous function, so it will throw error to developer.
TypeScript Playground
어떻게 생각해?
Reference
이 문제에 관하여(useState 후크가 게으른 초기 상태 함수가 동기식이어야 하는지 확인해야 합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mrdulin/should-usestate-validate-the-lazy-initial-state-function-must-be-a-synchronous-function-5bfh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)