Alraffe
이것 저것 개발.
Alraffe
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • Front-end
      • CSS
      • React
      • Next.js
    • Back-end
    • Book
      • Effective Typescript

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프론트엔드 책 추천
  • JS
  • react
  • JASON.stringify
  • vite 배포 에러
  • 오랠리
  • 프론트엔드회고
  • 배포 에러
  • 프론트엔드
  • frontend
  • 리액트
  • 타입스크립트 책 추천
  • JavaScript
  • JASON.parse()
  • next14
  • 이펙티브타입스크립트
  • 타입스크립트 책
  • vite 깃헙 배포
  • evnentBubbling
  • 주니어 개발자 이력서
  • 개발자 커피챗
  • TypeScript
  • 자바스크립트
  • 타입스크립트
  • 타입스크립트 추천
  • object 값을 찍고 싶을 떄
  • Til
  • 깃헙 배포 빈 화면
  • 노션 이력서
  • git

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Alraffe

이것 저것 개발.

Front-end/React

[React] React Hooks - useState, useEffect

2022. 4. 26. 00:14

 Hooks는 혼란을 야기했던 Class없이 React의 기능을 사용할 수 있게 해준다. Hooks는 함수 컴포넌트에서 React state와 생명주기(lifecycle features)을 연동할 수 있게 해주는 함수들을 말한다.

 

React Hooks는 다음과 같은 사용 규칙이 있다.

  • React 함수 컴포넌트 내에서 호출해야 한다.
  • 컴포넌트 내 최상위에서 호출해야한다. 

 

1. useState

state값은 컴포넌트가 렌더링 돼도 유지되며, 컴포넌트가 렌더링될 때 한번만 생성된다.

아래 코드에서 0의 자리에는 초기값을 넣는다.

function Sample() {
	// 선언
  const [count, setCount] = useState(0);
 	 return(
      <div>
          <span>{count}</span>
          <button onClick={()=> setCount(count+1)}>
      </div>
  )
}

 

2. useEffect

기존 React Class에서 제공했던 componentDidMount, componentDidUpdate, compoenentWillUnmount의 기능을 하나의 hooks로 제공한다. useEffect는 DOM 업데이트 후에 함수를 실행한다.

 

아래의 [props.friend.id]가 바뀔 때마다 effect함수가 실행된다. 만약 빈 배열을 넣을 경우 처음 렌더링될 때만 effect함수가 실행된다. 이 배열을 dependency라고 한다. 컴포넌트가 마운트될 때마다 실행할 수 있는 예로는 props를 state로 저장될 때, API를 실행할 때나 setInterval, setTimeout과 같은 함수가 있다.

 

return뒤에 써있는 함수는 cleanup함수라고 하며, 컴포넌트가 화면에서 사라질 때마다 실행된다. cleanup함수에는 clearInterval, clearTimeout을 실행하거나 라이브러리의 인스턴스를 제거한다.

useEffect(() => {
  function handleStatusChange(status) {
    setIsOnline(status.isOnline);
  }

  ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
  return () => {
  // cleanup
    ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
  };
}, [props.friend.id]);
저작자표시 비영리 변경금지 (새창열림)

'Front-end > React' 카테고리의 다른 글

vite+react 깃헙 배포 방법  (0) 2023.10.05
DOM onclick vs React onClick  (0) 2023.01.16
[React] React Hooks - useMemo, useCallback, useRef  (0) 2023.01.08
CRA에서 craco이용해 @components 절대경로 설정  (0) 2023.01.03
    'Front-end/React' 카테고리의 다른 글
    • vite+react 깃헙 배포 방법
    • DOM onclick vs React onClick
    • [React] React Hooks - useMemo, useCallback, useRef
    • CRA에서 craco이용해 @components 절대경로 설정
    Alraffe
    Alraffe

    티스토리툴바