FrontEnd/React

[ReactJS] useEffect()

kurooru 2023. 1. 11. 15:02

지난시간에 공부한 내용의 연장선상이지만,

리액트는 특정 원소가 변했을 때만 반응할 수 있게 우리를 도와준다.

 

다음 코드를 살펴보자

import { useState, useEffect } from "react";

function App() {
  
  const [counter, setValue] = useState(0);
  const [keyword, setKeyword] = useState("")
  const onClick = () => setValue((prev) => prev + 1);
  const onChange = (event) => setKeyword(event.target.value);
  console.log('I run all the time');

  // useEffect helps us to call a code only one time
  useEffect(() => {
    console.log("I run only once.");
  }, []);
  
  // This code runs every time the keyword changes
  useEffect(() => {
    // if the keyword is longer than 5 -> working
    if (keyword.length > 5) {
      console.log(`I run when ${keyword} changes`);
    }
  }, [keyword]);
  
  // This code runs every time the counter changes
  useEffect(() => {
    console.log(`I run when ${counter} chagnes`);
  }, [counter])

  // This code runs every thime either the counter or keyword changes
  useEffect(() => {
    console.log('I run when counter or keyword changes');
  },[counter, keyword])

  return (
    <div>
      <input 
      value={keyword} 
      onChange={onChange} 
      type="text" 
      placeholder="Search here...">
      </input>
      <h1>{counter}</h1>
      <button onClick={onClick}>click me</button>
    </div>
  );
}

export default App;

useEffect(() => {변했을때 취할 액션}, [변했을때 반응했으면 하는 원소])

를 사용하여, 변했을 때 반응했으면 하는 원소와 변했을 때 취할 액션을 정할 수 있다.