-
[React] ๋ ธ๋ง๋์ฝ๋ ReactJs๋ก ์ํ ์น ๋ง๋ค๊ธฐ : #5 useEffectreact 2024. 6. 10. 13:47

๐ state๋ฅผ ๋ณํ์ํฌ ๋ component๋ฅผ ์ฌ์คํ์ํค๋ ๊ฒ
<๊ณต์ ๋ฌธ์>
https://react.dev/reference/react/useEffect
useEffect – React
The library for web and native user interfaces
react.dev
useEffect
- useEffect๋ ๋ ๊ฐ์ argument๋ฅผ ๊ฐ๋ function
- ์ฐ๋ฆฌ๊ฐ ์คํ์ํค๊ณ ์ถ์ ์ฝ๋
- dependencies →react.js๊ฐ ์ง์ผ๋ณด์์ผ ํ๋ ๊ฒ
- ๊ทธ๊ฒ์ด ๋ณํํ ๋ ์ฝ๋ ์คํ
- useEffect๋ฅผ ํตํด ์ฐ๋ฆฌ๋ ์ธ์ ์ฝ๋๋ฅผ ์คํํ ์ง ์ ํ๊ถ์ ๊ฐ์ง ์ ์์
- ์๋ฌด๊ฒ๋ ์ง์ผ๋ณด์ง ์์. console.log("I run only once.") ํ๋ฒ๋ง ์คํ๋จ
→์ฒ์ ์คํ(๋ ๋)์์ ํ๋ฒ๋ง ์คํํ๊ณ ๋ค์๋ ์คํ X
useEffect(()=>{ console.log("I run only once."); },[]);2. ํ ๊ฐ์ ์์ดํ ๋ง ์ง์ผ ๋ด counter ๋ณํ์์๋ง ์คํ
→์์ํ ๋, counter ๋ณํ์์๋ง ์คํ
useEffect(()=>{ console.log("I run when 'counter' changes."); },[counter]);3. ๋ ์ค ํ๋๊ฐ ์คํ๋ ๋ ์ฝ๋ ์คํ
→์คํํ ๋, keyword ํน์ counter๊ฐ ๋ณํํ ๋๋ง ์คํ
useEffect(()=>{ console.log("I run when 'keyword&counter' changes."); },[keyword,counter]);- ์์ ์ฝ๋
import Button from "./Button" import styles from "./App.module.css" import { useState, useEffect } from "react"; function App() { const [counter,setValue]=useState(0); const onClick=()=>setValue((prev)=>prev+1); const onChange=()=>{} console.log('I run all the time') const iRunOnlyOnce=()=>{ console.log('i run only once.') } // ํน์ ์ฝ๋๊ฐ ํ๋ฒ๋ง ์คํ๋๊ฒ ํ๋ ๊ฒ // useEffect(iRunOnlyOnce,[]) useEffect(()=>{ console.log("Call the api...") },[]) return ( <div> <h1>{counter}</h1> <button onClick={onClick}>click me</button> </div> ); } export default App;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); useEffect(()=>{ console.log("I run only once."); },[keyword]); useEffect(()=>{ console.log("I run when 'keyword' changes."); },[]); useEffect(()=>{ console.log("I run when 'counter' changes."); },[counter]); useEffect(()=>{ console.log("I run when 'keyword&counter' changes."); },[keyword,counter]); // console.log('I run all the time') // const iRunOnlyOnce=()=>{ // console.log('i run only once.') // } // useEffect(iRunOnlyOnce,[]) // useEffect(()=>{ // console.log("Call the api...") // },[]); // ํน์ ์ฝ๋๊ฐ ํ๋ฒ๋ง ์คํ๋๊ฒ ํ๋ ๊ฒ // useEffect(()=>{ // if(keyword !==""&&keyword.length>5){ // console.log("SEARCH FOR", keyword)} // },[keyword]) return ( <div> <input value={keyword} onChange={onChange} type="text" placeholder="search here.." /> <h1>{counter}</h1> <button onClick={onClick}>click me</button> </div> ); } export default App;'react' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] jsํ์ผ์์ html ํ๊ทธ ์๋์์ฑํ๊ธฐ (0) 2024.06.12 [React] ๋ ธ๋ง๋์ฝ๋ ReactJs๋ก ์ํ ์น ๋ง๋ค๊ธฐ : #5 useEffect-Cleanup (0) 2024.06.10 [React] ๋ ธ๋ง๋์ฝ๋ ReactJs๋ก ์ํ ์น ๋ง๋ค๊ธฐ : #4 PROPS (0) 2024.06.09 [React] ๋ ธ๋ง๋์ฝ๋ ReactJs๋ก ์ํ ์น ๋ง๋ค๊ธฐ : #3 STATE (1) 2024.06.08 [React] Props component (0) 2024.05.08 - useEffect๋ ๋ ๊ฐ์ argument๋ฅผ ๊ฐ๋ function