사용자 지정 후크 만들기
9273 단어 javascriptbeginnerswebdevreact
평신도의 언어에서 반응 후크는 자바스크립트 함수입니다. 그러나 그들은 몇 가지 규칙을 부과하기 때문에 특별한 종류의 기능입니다.
현재 UI에서 수행해야 하는 대부분의 작업을 수행할 수 있는 꽤 많은a number 후크가 있습니다.
그러나 우리 모두는 기성 솔루션이 없는 특별한 사용 사례가 항상 있을 것이라는 것을 잘 알고 있으며 우리의 솔루션을 구현하고 싶을 수 있습니다.
반응 UI가 API의 데이터를 소비하는 상황을 상상해 보십시오. 이러한 경우 다음과 유사한 구현을 갖게 됩니다.
import React from "react";
function Test() {
const [data, setData] = useState(null);
useEffect(() => {
async function getData() {
try {
const response = await fetch(url);
const data = response.json();
setData(data);
} catch (error) {
console.log(error);
}
}
getData();
}, []);
return (
<div>
<ul>{data && data.map((d) => <li key={d.id}>{d}</li>)}</ul>
</div>
);
}
export default Test;
위의 스니펫은 구성 요소가 처음으로 마운트될 때 데이터를 가져오는 네트워크 요청을 만드는 함수를 호출하기 위해 react의 useEffect 후크를 사용합니다.
다른 구성 요소에서 데이터를 다시 가져오려면 위와 유사한 코드를 다시 작성합니다. 이러한 호출을 수행하는 구성 요소가 10개 있다고 가정합니다. 이는 사랑하는 DRY 원칙을 완전히 위반하는 해당 코드의 10개 복제본을 갖게 됨을 의미합니다.
충분히 관대하기 때문에 react는 우리의 고유한 요구를 충족시키기 위해 후크를 만드는 방법을 제공합니다. 따라서 우리는 모든 구성 요소에서 재사용할 수 있는 사용자 정의 후크를 구축하고 DRY 원칙을 되살릴 수 있습니다.
하나를 만들어 봅시다!
import React from "react";
function useFetch(url) {
const [data, setData] = useState(null);
useEffect(() => {
async function getData() {
try {
const response = await fetch(url);
const data = await response.json();
setData(data);
} catch (error) {
console.log(error);
}
}
getData();
}, []);
return data;
}
export default useFetch;
엄청난!
이제 우리가 해야 할 일은 사용자 지정 후크를 가져와 원할 때마다 사용하는 것입니다.
import React from 'react'
import useFetch from './useFetch'
function Test() {
const data = useFetch(URL)
return (
<div>
<ul>{data && data.map((d) => <li key={d.id}>{d}</li>)}</ul>
</div>
);
}
export default Test
한 가지 유의할 점은 커스텀 후크는 사용자가 후크를 생성할 때 특정 규칙을 따르는 경우에만 내장 후크와 동일한 규칙(위 참조)을 따른다는 것입니다.
글쎄요, 좋은 소식은 그들을 따라가는 것이 어렵지 않다는 것입니다. 가장 중요한 것은 사용자 지정 후크의 이름이
use
로 시작하고 cameCaseStyle을 따라야 한다는 것입니다.주요 테이크 아웃
Reference
이 문제에 관하여(사용자 지정 후크 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hermitex/create-your-custom-hook-372g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)