[React] React Hook - useEffect()
React Hook / useEffect( )
useEffect()
-
useEffect 란 코드를 언제 실행할지 선택하는 것
-
useEffect() 는 React component가 새로고침(렌더링) 될 때마다 특정 작업을 실행할 수 있도록 하는 리액트 Hook이다
-
비동기로 처리가 가능하다
useEffect 함수 불러오기
import React, { useEffect } from "react";
Component가 실행될 때 (나타날 때)
useEffect(() => {
console.log("새로고침 될때마다 실행");
});
👆 새로고침 될때마다 실행
useEffect(() => {
console.log("맨 처음 실행될 때 한 번만 실행");
}, []);
👆 새로고침할때마다 최초 한번만 실행하고 새로고침 전까진 실행될일이 없음
Component가 Update 되었을 때 (props, state 변경)
useEffect(() => {
console.log(effect); // 새로고침할때마다 최초 한번만 실행하고
console.log("effect이라는 값이 업데이트 될 때만 실행");
}, [effect]); // effect 만 지켜본다는 뜻 / effect 가 Update될때마다 실행된다
👆 처음 한번 실행하고 그 이후로는 Update 될때만 실행
예제코드
import { useState, useEffect } from "react";
function App() {
const [counter, setCounter] = useState(0); // 기본값은 0
const [keyword, setKeyword] = useState(""); // 기본값은 빈배열
const onClicks = () => setCounter((current) => current + 1); // 버튼을 클릭할때마다 1씩 증가
const onChanges = (e) => setKeyword(e.target.value); // input 창에 타자를 칠때마다 밸류를 인식
console.log("I run all the time"); // 버튼, 타자칠때마다 문구를 consol에 출력
// useEffect 란 코드를 언제 실행할지 선택하는 것
useEffect(() => {
console.log("I First one"); // 새로고침할때마다 최초 한번만 실행하고 새로고침 전까진 실행될일이 없음
}, []);
useEffect(() => {
console.log("I Keyword changes"); // 새로고침할때마다 최초 한번만 실행하고
}, [keyword]); // keyword 만 지켜본다는 뜻 / 타자를 칠때마다 실행된다
useEffect(() => {
console.log("I counter changes"); // 새로고침할때마다 최초 한번만 실행하고
}, [counter]); // counter 만 지켜본다는 뜻 / 버튼을 누를때 마다 실행된다
return (
<body>
<input
value={keyword}
onChange={onChanges}
type="text"
placeholder="next.."
/>
<h1>{counter}</h1>
<button onClick={onClicks}>Click Me</button>
</body>
);
}
export default App;