[Nomad Coder] 리액트 Hooks 강의 정리
Hooks란?
React 버전 16.8부터 React 요소로 새로 추가된 기능이다.
기존 Class 기반의 코드가 아니어도 상태값 등을 사용해 함수형 방식의 프로그래밍을 할 수 있다.
또한, Hook을 통해 서로 비슷한 것을 하는 작은 함수의 묶음으로 컴포넌트를 나누는 방법을 사용할 수 있게 된다. 또한 이러한 로직의 추적을 쉽게 할 수 있도록 리듀서를 활용해 컴포넌트의 지역 상태 값을 관리하도록 할 수 있다.
(https://ko.reactjs.org/docs/hooks-intro.html 참고)
Hooks의 장점
- 코드가 예뻐진다! 😝 간결하며 직관적이다.
- class를 사용하지 않고 함수형 프로그래밍이 가능하다.
- 보다 짧은 코드로 state를 사용할 수 있다.
- 원래 state를 사용하려면
this
같은 문장 규칙,render
를 사용하는 방법을 생각했어야 했음- state 선언
- render() 내에 이벤트 작성할 경우 함수로 풀어내어 this.setState(state ⇒ { return (item: state.item + 1) }) 이런식으로 굉장히 길어짐
- 원래 state를 사용하려면
Hooks의 종류
이 글에선 Nomad Coder 강의로 배운 종류만 기록한다.
useState
const [ item, setItem ] = useState();
- state값을 초기화 시켜준다.
- 초기에 initialState를 세팅할 수 있는 옵션을 제공한다.
→ ()에 값 지정 가능 - array를 return 해야 한다. 여기서는 item, setItem 요소를 가진다.
- 항상 2개의 value를 return
- value = item, 값
- 만약 item만 사용한다면
const item = useState(1)[0]
- 사용 예시
- 출력 ::
<h1> { item } </h1>
- 카운터 하나 올리기 ::
const plusItem = () ⇒ setItem(item + 1);
- 출력 ::
useEffect
useEffect(function, [dependency]);
-
component가 mount 되자마자, 또는 화면이 새로고침되면 실행된다.
- 컴포넌트가 렌더링 되면 특정 작업을 실행하도록 할 수 있다.
- 모든 변화를 감시하며, 화면이 새로고침되면(state의 갱신...) useEffect를 실행한다.
-
두 개의 인자는 function으로써의 effect, dependency를 가진다.
- 첫번째 인자는 useEffect로부터 function이 리턴되는 것이며, 이는
componentWillUnmount
와 같다. - 만약 dependency(deps)가 있다면 effect는 deps 리스트에 있는 값일 때만 값이 변하도록 활성화된다.
- 두번째 인자에 어떠한 값이 존재하고, 그 값의 state가 변하면 useEffect를 실행시킨다.
- 첫번째 인자는 useEffect로부터 function이 리턴되는 것이며, 이는
-
만약 dependency에 빈배열( [] )이 들어있다면 component가 mount되었을 때 한 번만 실행되고 더이상 실행되지 않을 것이다.
-
componentWillUnmount
,componentDidMount
,componentWillUpdate
와 비슷함 -
dependency에 빈배열이 들어가 있는 상태에서 useEffect안에 function을 넣으면
componentDidMount
,componentDidUpdate
때 호출될 것임- 만약 deps가 존재한다면 function은
componentDidMount
일 때만 호출됨componentWillUnmount
로부터 function 리턴 받음. 이를 Clean Up Function이라 부른다!
- 만약 deps가 존재한다면 function은
useRef
const refContainer = useRef (initialValue);
- DOM 노드나 React 엘리먼트에 직접 접근하기 위해서 사용하기도 함
- 기존 함수형 컴포넌트 내부에 선언된 변수와 그것이 감싸는 데이터는 해당 컴포넌트가 호출될 때마다 초기화됨. (리렌더링)
- 반면 useRef로 관리되는 변수는 값이 바뀌어도 리렌더링 되지 않음.
→ 리렌더링 없이 값을 변화시킬 수 있음!!! - current가 가리키는 값은 React에 의해 기억되기에 직접 변경하기 전까지는 해당 컴포넌트가 호출될 때마다 동일함
- 반면 useRef로 관리되는 변수는 값이 바뀌어도 리렌더링 되지 않음.
Author And Source
이 문제에 관하여([Nomad Coder] 리액트 Hooks 강의 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yund_272/Nomad-Coder-실전형-리액트-Hooks-강의-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)