Hook

생강🖤·2021년 3월 8일
0

오늘은 hook에 대해서 정리해보자✍🏻
출처 : https://ko.reactjs.org/docs/hooks-overview.html
역시 갓벽한 문서💙


Hook이란?

class를 작성하지 않고도 state와 다른 React기능을 사용할 수 있게 하는 기능
class안에서는 동작하지 않음

class에서 사용하던 state와 life Cycle method를 hook으로 사용 할 수 있다!

State Hook

class : setState

state를 기존 class에서는 setState로 관리했었다

class NameCard extends React.Component {
	constructor(props) {
    	this.state = {
        	name: "lemon",
            
        }
    }
};

render() {
	return
    <input value={name} onClick={(e)=>this.setState({name:e.target.value})} 
}

function : useState

render()단계에서만 집중하면 된다.

import React, {useState} from 'react';

function Example() {

	const [name,setName] = useState('이름');
    return 
    <input value={name} onChange={(e)=>setName(e.target.value)}/>;
    
    
}

useState는 현재의 state와 업데이트해주는 함수를 쌍으로 제공함!✨
useState는 이전 state와 새로운 state를 합치지 않는다!
useState는 인자로 초기 state값을 받는다!
setStatehook의 state는 객체일 필요가 없다!
이 초기값은 첫번째 렌더링에서 딱 한번 사용됨!

State Hook 여러개 선언하기

function ExampleManyStates() {
	
  const [age,setAge] = useState(10);
  const [name,setName] = useState('amy');
  const [todos,setTodos] = useState([{text:'coding'}]);
  
}

Effect Hook : 데이터를 가져오거나 dom을 조작할때 사용

useEffect는 함수 컴포넌트 내에서 side effects를 수행하게 해준다.
componentDidMount,componentDidUpdate,componentWillUnmount와 같은 목적으로 제공-> but 하나의 API로 통합됨

Effects는 컴포넌트 안에서 선언됨 -> 따라서 props, state에 접근 가능함!
Effect를 해제하고싶다면 -> 해제하는 함수를 반환하면 됨! (optional)

import React, {useState,useEffect} from 'react';

function Example() {
	const [count,setCount] = useState(0);
    
    useEffect(()=>{
    
    		document.title = `you clicked ${count} times`;
    });
    
    return (
    	<div>
        	<p> you clicked {count} times </p>
            <button onClick = {()=>setCount(count+1)}>
           	 Click me
            </button>
        </div>
    );
    
}

조건부 effect

effect의 기본 동작은 모든 렌더링을 완료한 후 effect를 발생시킴.
의존성 중 하나가 변경된다면 effect는 항상 재생성됨.

useEffect에 두번째 인자를 전달하면 (이때 인자는 effect가 종속되어있는 배열의 값.)
조건부 effect가 작동함.

만약 effect를 한번만 실행하고 싶다면 두번째 인자로 [] 빈 배열을 전달 한다.
-> effect는 React에게 props나 state에서 가져온 어떤 값도 의존하지 않음을 보여줌!
-> 단, props와 state는 항상 초기값을 가진다!


Hook 사용규칙

  1. 최상위에서만 Hook을 호출함 (반복,조건,중첩된 함수 내에서 hook을 사용하지 말것)
  2. React 함수 컴포넌트 내에서만 Hook을 호출한다.
profile
Slow but steady

0개의 댓글

관련 채용 정보