ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [React] useEffect()
    React 2024. 3. 27. 00:30
    • useEffect(function, deps)

    function ; 수행하고자 하는 작업

    deps : 배열 형태, 배열 안에는 검사하고자 하는 특정 값 , or 빈 배열

     

    import Button from "./Button";
    import styles from "./App.module.css";
    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');
    
      // 컴포넌트가 화면에 가장 처음 렌더링 될때, 한 번만 실행하고 싶을 때는 deps위치에 빈배열
      //배열 생략시 리렌더링 될 때마다 실행
      useEffect(() =>{
        console.log("i run only once...")
      }, []); 
      
      //컴포넌트 업데이트 될 때(특정 props나 state바뀔 때)
      useEffect(() => {
        if(keyword !== "" && keyword.length > 5)
        console.log("i run when keyword changes", keyword);
      },[keyword]);
    
      useEffect(() => {
        if(counter !== "" && keyword.length > 5)
        console.log("i run when counter changes", counter);
      },[counter]);
    
      useEffect(() => {
        if(counter !== "" && keyword.length > 5)
        console.log("i run when keyword & counter changes");
      },[keyword, counter]);
      return(
        <div>
          <input 
            value={keyword}
            onChange={onChange}
            type="text" 
            placeholder="Search here..."></input>
          <h1 className={styles.title}>{counter}</h1>
          <button onClick={onClick}>Click me!</button>
        </div>
      )
    }
    export default App;

     

    • cleanup function : 컴포넌트가 unmount 될 때(사라질 때)
    import { useState, useEffect } from "react";
    
    function Hello() {
      useEffect(function () {
        console.log("hi :)");
        return function () {
          console.log("bye :("); //useEffect에 대한 뒷정리, return 뒤에 나오는 함수
        };
      }, []);
      useEffect(() => {
        console.log("hi :)");
        return () => console.log("bye :(");
      }, []);
      return <h1>Hello</h1>;
    }
    
    function App() {
      const [showing, setShowing] = useState(false);
      const onClick = () => setShowing((prev) => !prev);
      return (
        <div>
          {showing ? <Hello /> : null}
          <button onClick={onClick}>{showing ? "Hide" : "Show"}</button>
        </div>
      );
    }
    
    export default App;
    

    'React' 카테고리의 다른 글

    [React] 생활코딩_react2022  (0) 2024.04.17
    [React] 컴포넌트, 컴포넌트 생명주기  (0) 2024.04.15
    [React] React란?  (0) 2024.04.15
Designed by Tistory.