온라인 강의/ReactJS로 영화 웹 서비스 만들기 [Nomad]

#6.2 Deps

유호야 2023. 5. 23. 05:43
반응형

 

useEffect(()=>{
      console.log("SEARCH FOR", keyword);
}, [keyword] );

 

keyword의 부분이 keyword에 onChange할 때 실행하겠다는 의미가 된다.

 

1. useEffect() 한 번만 실행하는 경우

  useEffect(() => {
    console.log('only once');
  }, []);

 

2. useEffect() 특정 요소에 변화가 있을 때만 실행

  useEffect(() => {
    console.log('counter has changed');
  }, [counter]);

 

3. useEffect() 두 가지 요소에서 변화가 있을 때 

  useEffect(() => {
    console.log('counter or keyword has changed');
  }, [counter, keyword]);

 

 


 

전체 코드

import { useState, useEffect } from 'react';
import Button from './Button';
import styles from './App.module.css';

function App() {
  const [counter, setValue] = useState(1);
  const [keyword, setKeyword] = useState("");

  function onClick() {
    setValue((prev) => prev + 1);
  }
  // console.log("I run all the time");

  const onChange = (event) => {
    setKeyword(event.target.value);
  }
  // const iRunOnlyOnce = () => {
  //   console.log("I run only once");
  // }
  useEffect(() => { console.log("I run only once") }, []);
  useEffect(() => {
    console.log('keyword has changed');
    // if (keyword !== "" && keyword.length > 5) {}
  }, [keyword]);

  useEffect(() => {
    console.log('counter has changed');
  }, [counter]);

  useEffect(() => {
    console.log('counter or keyword has changed');
  }, [counter, keyword]);


  return (
    <div>
      <input value={keyword} onChange={onChange} type="text" placeholder="Search here ... " />
      <h1 className={styles.title}>{counter}</h1>
      <Button onClick={onClick} txt="This is a button" bgc='red' />
    </div>
  );
}

export default App;
반응형

'온라인 강의 > ReactJS로 영화 웹 서비스 만들기 [Nomad]' 카테고리의 다른 글

#6.4 Cleanup  (0) 2023.05.23
#6.3 Recap  (0) 2023.05.23
#6.0 Introduction  (0) 2023.05.23
#5.1 Tour of CRA  (0) 2023.05.23
#5.0 Introduction  (0) 2023.05.22