react
[React] ๋ ธ๋ง๋์ฝ๋ ReactJs๋ก ์ํ ์น ๋ง๋ค๊ธฐ : #5 useEffect
yjenis
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;