4.useRef & Custom hook
useRef
Hookμ κ·μΉ
Reactμ Custom Hooksλ κ΅¬μ± μμμμ μ¬μ¬μ© κ°λ₯ν λ Όλ¦¬λ₯Ό μΆμΆνκ³ μ¬λ¬ κ΅¬μ± μμ κ°μ 곡μ ν μ μλ κΈ°λ₯μ΄λ€. λ€μμ μ¬μ©μ μ§μ νν¬λ₯Ό λ§λ€ λ μΌλμ λμ΄μΌ ν λͺ κ°μ§ μΌλ°μ μΈ κ·μΉμ΄λ€.
ν¨μ μ΄λ¦μ 'use'λ‘ μμν΄μΌ νλ€. κ·μΉμ λ°λΌ Reactμ λͺ¨λ μ¬μ©μ μ§μ νν¬λ 'use'λΌλ λ¨μ΄λ‘ μμν΄μΌ νλ€. μ΄λ κ² νλ©΄ λ€λ₯Έ κ°λ°μκ° ν΄λΉ ν¨μκ° νν¬λ‘ μ¬μ©λλ€λ κ²μ μ μ μκΈ° λλ¬Έμ΄λ€.
μ¬μ©μ μ μ νν¬ λ΄μμ λ€λ₯Έ νν¬ μ¬μ©: μ¬μ©μ μ μ νν¬λ κ΅¬μ± κ°λ₯νλλ‘ λμ΄ μμΌλ―λ‘ μ¬μ©μ μ μ νν¬ λ΄μμ useState, useEffect λ° useContextμ κ°μ λ€λ₯Έ νν¬λ₯Ό μμ λ‘κ² μ¬μ©ν΄μΌ νλ€.
μ¬μ©μ μ§μ νν¬μ μ΅μμ μμ€μμλ§ νν¬ νΈμΆ: νν¬λ λ΄λΆ 루ν, 쑰건 λλ μ€μ²© ν¨μκ° μλ κ΅¬μ± μμ λλ μ¬μ©μ μ§μ νν¬μ μ΅μμ μμ€μμλ§ νΈμΆν΄μΌ νλ€. μ¦, μ¬λ¬ λ² νΈμΆλ μ μλ μ½λ°± λλ μ΄λ²€νΈ νΈλ€λ¬ λ΄μμ νν¬λ₯Ό νΈμΆν΄μλ μ λλ€.
λ°°μ΄ λλ κ°μ²΄ λ°ν: μ¬μ©μ μ§μ νν¬λ νμ λ°°μ΄ λλ κ°μ²΄λ₯Ό λ°νν΄μΌ νλ€. μ΄λ κ² νλ©΄ νν¬λ₯Ό μ¬μ©νλ κ΅¬μ± μμμμ κ°μ μ½κ² λΆν΄νκ³ μ¬μ©ν μ μκΈ° λλ¬Έμ΄λ€.
μ¬μ©μ μ§μ νν¬ λ¬Έμν: μ½λμ λ€λ₯Έ ν¨μλ κ΅¬μ± μμμ λ§μ°¬κ°μ§λ‘ μ¬μ©μ μ§μ νν¬λ₯Ό λͺ νν μ£ΌμμΌλ‘ λ¬Έμννκ³ κΈ°λ₯, μ¬μ© λ°©λ², λ§€κ° λ³μ λλ λ°ν κ°μ μ€λͺ νλ κ²μ΄ μ€μνλ€.
μ¬μ©μ μ§μ νν¬ ν μ€νΈ: μ¬μ©μ μ§μ νν¬λ₯Ό μ² μ ν ν μ€νΈνμ¬ μμλλ‘ μλνκ³ κ·Ήλ¨μ μΈ κ²½μ°λ μκΈ°μΉ μμ μ λ ₯μ μ²λ¦¬νλμ§ νμΈνμμμ€.
usehooks-tsμ useBoolean 컀μ€ν
ν
import { Dispatch, SetStateAction, useCallback, useState } from 'react'
interface UseBooleanOutput {
value: boolean
setValue: Dispatch<SetStateAction<boolean>>
setTrue: () => void
setFalse: () => void
toggle: () => void
}
function useBoolean(defaultValue?: boolean): UseBooleanOutput {
const [value, setValue] = useState(!!defaultValue)
const setTrue = useCallback(() => setValue(true), [])
const setFalse = useCallback(() => setValue(false), [])
const toggle = useCallback(() => setValue(x => !x), [])
return { value, setValue, setTrue, setFalse, toggle }
}
export default useBooleanμ¬μ©
import { useBoolean } from 'usehooks-ts'
export default function Component() {
const { value, setValue, setTrue, setFalse, toggle } = useBoolean(false)
// Just an example to use "setValue"
const customToggle = () => setValue((x: boolean) => !x)
return (
<>
<p>
Value is <code>{value.toString()}</code>
</p>
<button onClick={setTrue}>set true</button>
<button onClick={setFalse}>set false</button>
<button onClick={toggle}>toggle</button>
<button onClick={customToggle}>custom toggle</button>
</>
)
}Reference
Last updated