React.useState를 사용하여 함수를 저장하는 방법
3593 단어 reacthooksjavascriptusestate
나는 예전의 클래스 기반 React 컴포넌트를 기능적인 컴포넌트로 리팩토링하고 있었습니다. 나는 일반적으로 발생하는
useState
후크를 사용하려고했습니다. 하지만 이 경우에는 함수를 저장하려고 했습니다.import React, { useState } from "react";
const MyComponent = (props) => {
const [myFunc, setMyFunc] = useState();
const handleClick = () => {
const callback = props.someFunctionCall();
setMyFunc(callback);
};
return (
<button type="button" onClick={handleClick}>
A button
</button>
);
};
언뜻보기에 상황이 괜찮아 보입니다. 그런데 실행해보니 바로 콜백 함수가 호출되는 것을 알 수 있었습니다.
왜요?
코드는 충분히 간단해 보입니다. 그러나 내 실수를 깨닫는 데 몇 분이 걸렸습니다. useState
의 업데이트 함수는 값을 반환하거나 값을 반환하는 함수를 허용하기 때문입니다.
type SetStateAction<S> = S | ((prevState: S) => S);
그래서 setMyFunc
에 함수를 전달할 때 React는 callback
함수를 인수로 전달하여 prevState
함수의 반환 값을 얻으려고 했습니다.
해결책
문제를 인식하면 해결하기가 더 쉽습니다. 실제 callback
함수를 래핑하는 화살표 함수만 있으면 됩니다.
setMyFunc(() => callback);
그렇게 함으로써 React에 callback
함수를 가져오고 적절하게 설정하는 함수를 제공합니다.
자세한 내용은 React's Hooks API Reference을 참조하십시오.
Reference
이 문제에 관하여(React.useState를 사용하여 함수를 저장하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/sarioglu/how-to-store-a-function-using-react-usestate-4ffh
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
type SetStateAction<S> = S | ((prevState: S) => S);
문제를 인식하면 해결하기가 더 쉽습니다. 실제
callback
함수를 래핑하는 화살표 함수만 있으면 됩니다.setMyFunc(() => callback);
그렇게 함으로써 React에
callback
함수를 가져오고 적절하게 설정하는 함수를 제공합니다.자세한 내용은 React's Hooks API Reference을 참조하십시오.
Reference
이 문제에 관하여(React.useState를 사용하여 함수를 저장하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sarioglu/how-to-store-a-function-using-react-usestate-4ffh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)