커스텀 훅 만들기
- useState, useEffect이 여러번 사용되면, 문맥에 따라 hook들을 묶어서 커스텀 훅으로 만들 수 있다.
const [keyword, setKeyword] = React.useState(() => {
return window.localStorage.getItem("keyword")
})
const [result, setResult] = React.useState("")
const [typing, setTyping] = React.useState(false)
React.useEffect(() => {
window.localStorage.setItem("keyword", keyword)
}, [keyword])
- 위에 소스를 하나의 커스텀 Hook으로 만들 수 있다.
function setLocalStorage(itemName, value = "" ) {
const [state, setState] = React.useState(() => {
return window.localStorage.getItem(itemName) || value
})
React.useEffect(() => {
window.localStorage.setItem(itemName, state)
}, [state])
return [state, setState]
}
- 함수를 선언하고 itemName 과 value를 받는다.
- itemName은 state 상태 값의 이름이 되고 value는 초기값이 된다.
- return 값으로 state, setState 게터, 세터를 돌려준다.
커스텀 훅 사용하기
const [keyword, setKeyword] = useLocalStorage("keyword")
const [result, setResult] = useLocalStorage("result")
const [typing, setTyping] = useLocalStorage("typing", false)
- 반복된 훅은 커스텀 훅으로 묶고, 반복되는 코드는 함수로 묶는다.
참조
- 패스트 캠퍼스 온라인 강좌(한 번에 끝내는 React의 모든 것 초격자 패키지 Online)