[25-1] Destructuring (비구조화 할당 /구조분해 할당)
[25-2] Rest 파라미터
[25-3] Custom Hooks
[25-3] 타입스크립트 Generic
📂 배열의 구조분해 할당
const classmates = ["철수","영희","훈이"]
const child1 = classmates[0]
const child2 = classmates[1]
const child3 = classmates[2]
베열의 구조분해 할당
const [child1, child2, child3] = classmates
📌 모르고 사용했던 배열의 구조분해 할당
const [state,setState] = useState("")
const bbb = useState(””)
의 리턴값이 배열이므로 const state = bbb[0]
, const setCounter = bbb[1]
로 사용 할 수 있다.📂 객체의 구조분해 할당
const child = { name : “철수”, age : 58, school : “개발 공장” }
const name = child.name
const age = child.age
const school = child.school
객체의 비구조화 할당
const {name, age, school} = child
📌 모르고 사용했던 객체의 구조분해 할당
const { data, loading } = useQuery(FETCH_BOARDS)
const aaa = useQuery(FETCH_BOARDS)
로 받아와 aaa.data
, aaa.loading
이렇게 사용할 수 있었던 것delete
를 사용해 원본을 건드리는 일은 그리 바람직하지 못하다.rest
파라미터를 이용한다.rest 파라미터 구조분해 할당과 함께 사용
const { money, hobby, ...rest } = child
🎯 반드시 rest라고 써야 하는 것은 아니다. 그냥 관례다.
useState
, useContext
, useEffect
, useRef
등 다양한 react 내장 Hook을 사용해 왔는데,사실 Hook의 정체는 함수였다.Custom Hook
이란 이름 그대로 개발자가 스스로 커스텀 한 훅을 의미한다.🎯 custom hooks 사용시 주의사항
- custom hook을 사용하게되면 함수 네이밍에 use를 사용해줘야된다.
- use를 붙이지 않았을 경우 실행은 되지만 의도와는 다르게 작동되거나 훅의 에러 로그를 볼 수 없게 되고 에러 핸들링이 굉장히 어려워질 수 있다.
📂 useAuth 함수 만들기
src/components/commons/hooks/useAuth.tsx
import { useRouter } from 'next/router' import { useEffect } from 'react' function useAuth(){ const router = useRouter() // useEffect 훅스를 사용하고 있기 때문에 커스텀 훅스입니다. useEffect(()=>{ if(!localStorage.getItem("accessToken"){ alert("로그인 후 이용 가능합니다!") void router.push("/23-03-login-check") } },[]) }
custom-hooks-use-auth 폴더의 index.tsx
이 페이지는 useAuth를 실행할 페이지
import { useAuth } from "...파일 공유" export default function CustomUseAuthPage() { useAuth() return <div>프로필 페이지 입니다.</div> }
📌 Closure - 기초(Generic)
📌 Closure - 기초(Generic) - 화살표 함수
📌 Closure - 기초(Generic) - HOC
📌 withAuth에 Generic 적용