-
Notifications
You must be signed in to change notification settings - Fork 0
1. React
DoYoung Park edited this page May 7, 2023
·
1 revision
์ฐ์ React๋ฅผ ํ๊ฒ๋๋ค๋ฉด, JSX๋ผ๋ ์ธ์ด๋ฅผ ํ์ฌ์ผํ๋ค.
React๋ผ๊ณ ํด์ ์ ๋ ์ด๋ ค์ด๊ฒ ์๋๋ค. ๊ธฐ์กด์ฒ๋ผ HTML / CSS ์ง์ ์น ํ์ด์ง ๋ง๋ค์ด ๋๊ฐ๋ฉด ๋!
๋์ HTML ๋ง๊ณ JSX๋ฅผ ์ฐ๋๋ฐ JSX๊ฐ ๋ญ๋ฐ ๊ทธ๋์?
JSX JavaScript eXtension์ ์ค์๋ง๋ก์จ HTMLํ๊ทธ (div, h1, h2 ๋ฑ)๋ค์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ค์ฝ๋ ์์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ปํ๋ค.
JSX๋ก ์์ฑ๋ ์ฝ๋๋ค์ ๋น๋๋ ๋, Babel์ด ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ก ๋ณํ์์ผ์ค๋ค.
-
class ๋ฃ์ ๋ className
-
๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ & ๋ณ์ ๊ฝ๊ธฐ { ๋ณ์ ๋ช }
-
style ๋ฃ์ ๋ style= {{์ด๋ฆ '๊ฐ'}}
- import { useState }
- useState(๋ณด๊ดํ ์๋ฃ)
- let [์๋ช ,์๋ช ]
- let [ a , c ] = [ 1 , 2 ]
-
์ผ๋ฐ ๋ณ์๋ ๊ฐ์๊ธฐ ๋ณ๊ฒฝ๋๋ฉด html ์๋์ผ๋ก ๋ฐ์์ด ์๋จ
-
state๋ ๊ฐ์๊ธฐ ๋ณ๊ฒฝ๋๋ฉด ๋ฐ๋ก ์๋์ผ๋ก ๋ฐ์ํด์ค ์ฆ, ์๋ ์ฌ ๋ ๋๋ง!
-
๋ณ๋์ ์๋์ผ๋ก html์ ๋ฐ์๋๊ฒ ๋ง๋ค๊ณ ์ถ์ผ๋ฉด state ์ฐ๊ธฐ!
์ ๋ง์ฌ์ด ์ ๋ฆฌ โ
์์ฃผ ๋ณ๊ฒฝ๋ ๊ฑฐ ๊ฐ์ html ๋ถ๋ถ์ state๋ก ๋ง๋ค์ด ๋๊ธฐ
- ๊ธฐ์กด state == ์ ๊ท state์ ๊ฒฝ์ฐ ๋ณ๊ฒฝ ์ํด์ค
/_eslint-disable_/
- jsํ์ผ ์ต์๋จ ์ถ๊ฐํ๊ธฐ! ์ด๋ฌํ๊ฒ์ด Lint ๋๋ ๊ธฐ๋ฅ
- ํจ์ ์ด๋ฆ์ ๋ฃ์ด์ผํจ. ๋ฌธ๋ฒ์ ๋ฐ๋ก ๋ฃ์ด๋ ์๊ด์ ์์!
- onClick={ ํจ์๋ฅผ ๋ฃ์ด์ผํจ! }
- state ๋ณ๊ฒฝ? ๋ณ๊ฒฝํจ์๋ฅผ ๋ฃ์์ผํจ
state๋ณ๊ฒฝํจ์(์๋ก์ดstate)
<span
onClick={() => {
setlike(like++);
}}
>
์๋ณธ ๋ฐ์ดํฐ๋ฅผ ์๋ก์ด ๋ณ์๋ก ์ ์ฅํ ๋ค์์ ๋ณ๊ฒฝํ๊ณ ์ถ์๊ฒ๋ง ๋ณ๊ฒฝํ๋ ๋ฌธ๋ฒ์ผ๋ก, ์๋ณธ์ ๋ณด์กดํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ด๋ฌํ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
let [title, b] = useState([
"๋จ์ ์ฝํธ ์ถ์ฒ",
"๊ฐ๋จ ์ฐ๋ ๋ง์ง",
"์ฌ์ ์ ๋ฐ ์ถ์ฒ",
]);
function setDate() {
let copy = [...title];
copy[0] = "์ฌ์ ์ฝํธ ์ถ์ฒ";
b(copy);
}
- state๊ฐ array / object๋ฉด shallow copy๋ฅผ ๋ง๋ค์ด์ ์์ ํ์