์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- suspense ๋์์๋ฆฌ
- suspense react-query
- emtion app router
- js ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ
- suspense ๋ณ๋ชฉํ์
- ๋ฆฌ์กํธ์ฟผ๋ฆฌ suspense
- ๋ฐฑ์ค 1339๋ฒ js
- emotion RSC
- ์นด์นด์ค ์ฝํ
- ๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง ํ๊ณ
- app router emotion
- suspense ๋น๋๊ธฐ
- ์ต์ ๋์ฒด์ด๋
- ์๋ฐ์คํฌ๋ฆฝํธ ์ค์ฝํ
- ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ์์ด ์์ถ
- js
- ๋ฐฑ์ค 2108 nodejs
- js ๋ฌธ์์ด ์์ถ
- ๋ฐฑ์ค 1339๋ฒ ์๋ฐ์คํฌ๋ฆฝํธ
- ์ค์ฝํ
- ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์์ด ์์ถ
- ๋ฐฑ์ค 1339๋ฒ nodejs
- ๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง
- ์ฌ์ฉ์ฑ ๊ฐ์
- js ์ค์ฝํ
- next13 emotion
- ๊ตฌ๋ฆํค
- ๋ฐฑ์ค 2108 ์๋ฐ์คํฌ๋ฆฝํธ
- TypeError: createContext only works in Client Components. Add the "use client" directive at the top of the file to use it. Read more:
- ํ๋ก๊ทธ๋๋จธ์ค ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ
- Today
- Total
Lennon FE
[React] ๋น๋๊ธฐ useState ๋๊ธฐ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋ณธ๋ฌธ
๋ค๋ค ๋ฆฌ์กํธ ํ๋ก์ ํธ์์ useState๋ฅผ ์ฐ๋ฉฐ ๋นํฉํ๋ ์ ์ด ์์๊ฑฐ๋ผ ์๊ฐํ๋ค.
๋ฆฌ์กํธ์ useState๋ฅผ ์ฐ๋ค๋ณด๋ฉด ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋๋ก ๋์ํ์ง ์๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
์๋ ์ฝ๋๋ ์ฒดํฌ๋ฐ์ค๊ฐ ํ๋ ์กด์ฌํ๊ณ ์ฒดํฌํ ๋๋ง๋ค ์ํ toggle ๊ฐ์ด true or false๋ฅผ ๊ฐ์ง๋ ๋ก์ง์ด๋ค.
์ฒดํฌ๋ฐ์ค๋ฅผ ์ฒดํฌํ๋ ๊ฑธ๋ก ์ํ๊ฐ์ ๋ฐ๊พธ๋ ์์๋ฅผ ๋ณด๊ณ ๊ฒฐ๊ณผ๋ฅผ ์์ํด๋ณด์
import React, { useState } from "react";
function App() {
const [toggle, setToggle] = useState(false);
const onChange = () => {
setToggle((toggle) => !toggle);
if(toggle) {
console.log('toggle์ True'); // ๋ฌด์์ด
} else {
console.log('toggle์ False'); // ๋์ฌ๊น์
}
};
return (
<>
<input type="checkbox" onChange={onChange} />
</>
);
}
์ฐ๋ฆฌ๋ ๋น์ฐํ๊ฒ๋ ํจ์ ๋ด๋ถ์ setToggle๋ก ์ธํด toggle ์ํ๊ฐ์ด true๋ก ๋ณ๊ฒฝ๋๊ณ , ๋ฐ์ if๋ฌธ์์ toggle์ True๊ฐ ์ถ๋ ฅ๋ ๊ฑฐ๋ผ ์๊ฐํ๋ค.
๊ทธ๋ฌ๋ ํ๋ฌดํ๊ฒ๋ ๋ฆฌ์กํธ๋ ์ฐ๋ฆฌ ์์๊ณผ ๋ค๋ฅด๊ฒ toggle์ false๊ฐ ์ถ๋ ฅ๋๋ ๊ฑธ ํ์ธํ ์ ์๋ค.(๋น๋๊ธฐ....๐)
๊ทธ๋ฌ๋ ๋ฆฌ์กํธ๋ ์ฐ๋ฆฌ์๊ฒ useEffect๋ผ๋ ๊ฐ๋ ฅํ ๋๊ตฌ๋ฅผ ์ง์ํด์ค๋ค!!
useEffect ์ฌ์ฉ
import React, { useState, useEffect } from "react";
function App() {
const [toggle, setToggle] = useState(false);
useEffect(() => {
if(toggle) {
console.log('toggle์ True');
} else {
console.log('toggle์ False');
}
}, [toggle])
const onChange = () => {
setToggle((toggle) => !toggle);
};
return (
<>
<input type="checkbox" onChange={onChange} />
</>
);
}
useEffect๋ฅผ ์ ์ธํด toggle์ด ๋ฐ๋๋๋ง๋ค ํด๋น ๋ก์ง์ด ๋์๊ฐ๋๋ก ๊ตฌ์ฑํ๋ฉด ๋๊ฐ๋ด๋ ๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฑธ ์ ์ ์๋ค.
setState๋ฅผ ๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ธฐ๋ณด๋ค(์ฝ๋๊ฐ ์์ฃผ ๋๋ฌ์์ง ๊ฒ์ด๋ค), hook์์ ์ ๊ณตํ๋ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํด
๋๊ธฐ์ ์ด๊ธธ ์ํ๋ ๋ก์ง์ ๊ตฌ์ฑํด๋ณด์!
์ด๋ค ์ค๋ฅ๊ฐ ์์ผ๋ฉด ๊ทธ ๋ถ๋ถ์์ ํด๊ฒฐ์ฑ ์ ๊ณ ๋ฏผํ ๊ฒ ์๋๋ผ ๋๊ฒ ๊ณ ๋ฏผํ๋ ์์ธ๋ฅผ ๊ฐ์ ธ์ผ ํ ๊ฒ ๊ฐ๋ค.
useEffect๋ ์์ฃผ ๊ฐ๋ ฅํ ๋๊ตฌ์ด๋ฏ๋ก ๊ณต์ ๋ฌธ์๋ฅผ ํตํด ์๋ฒฝํ๊ฒ ์ตํ๋ ๊ฑธ ์ถ์ฒํ๋ค.
https://ko.reactjs.org/docs/hooks-effect.html
'๐งโ๐ป Web > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] Cypress๋ก e2e ํ ์คํธ๋ฅผ ๊ตฌํํด๋ณด์ (2) | 2023.05.14 |
---|---|
[React] ์ต์ ๋ ์ฒด์ด๋ (0) | 2022.07.21 |
[React] PostCSS์์ style๊ฐ์ root์ฒ๋ผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ (2) | 2022.05.21 |
[React] React Route์ ๋ํด ์์๋ณด์ (0) | 2022.05.19 |
[React] React ๊ธฐ๋ณธ - JSX ๋ฌธ๋ฒ (0) | 2022.04.12 |