ํ๋ก ํธ์๋ ๊ธฐ์ ์์ ๋น ์ง ์ ์๋ ๊ธฐ์ React
๋ฅผ ์ตํ๋ ์ฒซ ๋ ์ด๋ค!
React๋ Javascript ์ฌ์ฉ์ ์ธํฐํ์ด์ค (UI) ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ํ๋ ์์ํฌ์ ์ฐฉ๊ฐ ํ ์ ์์ง๋ง ์์ฐํ ๋ค๋ฅด๋ค.
ํ๋ ์์ํฌ๋ ๋ค๋ฅธ์ฌ๋๋ค์ด ๋ง๋ค์ด๋ ํ ์์์ ์์ ์ ํ๋๊ฒ
ex) Vue,Angular
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ด ์์ ์ ๋ค๋ฅธ์ฌ๋์ด ๋ง๋ค์ด๋ ์ฝ๋๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ๋๊ฒ
ex)React
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ React๋ ๊ธฐ์ ์ ์ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ํด third-party๋ฅผ ์ค์นํ๊ณ
React-Router ๋ฑ ์ฌ๋ฌ ๊ธฐ์ ์ ์ฌ์ฉ ํ ์ ์๋ค.
Node.js๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ ๋ฐ(ex:์๋ฒ)์์๋ ์์ ํ ์ ์๋ ํ๊ฒฝ์ด๋ค. ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐ ํ์ํ ์ฃผ์ ๋๊ตฌ๋ค(ex. ๋ฐ๋ฒจ, ์นํฉ)์ด Node.js ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ์ค์นํด์ผ ํ๋คโ๏ธ
์ค์น ํ์ธ ๋ฐฉ๋ฒ
node -v
Node ๊ธฐ๋ฐ์ ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด npm(node package manager)์ด๋ผ๋ ํจํค์ง ๋๊ตฌ๊ฐ ํ์ํ๋ค.
์ค์น ํ์ธ ๋ฐฉ๋ฒ
npm -v
๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์์ํ๋๋ฐ ํ์ํ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธํ ํด์ฃผ๋ ๋๊ตฌ
CRA ์ค์น
npx create-react-app .
. ์ ํ์ฌ๊ฒฝ๋ก
Component : ์ฌํ์ฉ ๊ฐ๋ฅํ UI ๊ตฌ์ฑ๋จ์
Component ํน์ง
1. ์ฌ์ฌ์ฉ์ ์ฉ์ดํ๋ค
2. ์ฝ๋ ์ ์ง๋ณด์์ ์ฉ์ดํ๋ค.
3. ํ์ด์ง ๊ตฌ์ฑ์ด ์ด๋ป๊ฒ ๋์ด์๋์ง ํ์ธํ๊ธฐ ์ฝ๋ค.
4. ์ปดํฌ๋ํธ ์์ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐ ํ ์ ์๋ค. (๋ถ๋ชจ ์ปดํฌ๋ํธ / ์์ ์ปดํฌ๋ํธ)
5. ํจ์ํ ์ปดํฌ๋ํธ / ํด๋์คํ ์ปดํฌ๋ํธ 2๊ฐ์ง๊ฐ ์๋ค.
์ปดํฌ๋ํธ ์ ์ธ ๋ฐฉ๋ฒ ์ค ํ๋์ธ ํจ์ํ ์ปดํฌ๋ํธ๋ ํด๋์คํ ์ ์ธ ๋ฐฉ์๋ณด๋ค ์ฝ๊ณ ๊ฐ๊ฒฐํ๋ค! hook
๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์ด์ ์ด์ ๋ณด๋ค state๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ๋์ด ํ์
์์ ๋ง์ด ์ฐ์ธ๋ค!
import React from 'react'
function Main() {
return (
<>
<Navigation />
<div className="main">
<FeedsContainer />
<RecommendContainer />
</div>
</>
);
}
ํด๋์คํ ์ปดํฌ๋ํธ๋ render
ํจ์๋ฅผ ํ์์ ์ผ๋ก ์ฌ์ฉํด์ผ ํ๊ณ JSX๋ฅผ ๋ฐํํ๋ค.
import React from 'react'
class Component extends React.Component {
render() {
return (
<div>
<h1>This is Class Component!</h1>
</div>
)
}
}
export default Component
JavaScript Syntax Extension
JSX๋ ๋ฆฌ์กํธ์์ ์ฌ์ฉํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฅ๋ฌธ๋ฒ์
๋๋ค.
JSX๋ก ์์ฑํ ์ฝ๋๋ ๋ฐ๋ฒจ์ ์ฌ์ฉํ์ฌ ์ผ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์ ์ฝ๋๋ก ๋ณํ๋ฉ๋๋ค.
- HTML ํ๊ทธ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ณด๊ธฐ์ฝ๋ค.
- HTML ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด์ JavaScript๋ ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
1.class --> className ์ผ๋ก ๋ณ๊ฒฝํด์ผํ๋ค.
2.Self Closing tag : ๊ธฐ์กด์<p></p>
ํ๊ทธ์ฒ๋ผ ๋ซ์์ฃผ๋ ํ๊ทธ์์ด<p />
๋ก ๊ฐ๋ฅํ๋ค.
3. ๋ชจ๋ ์์๋ฅผ ๊ฐ์ธ๋ ์ต์์ ์์ํ์(React Fragments: <>..</>) : ๋ด๋ถ์์๋ฅผ ๊ฐ์ธ๋ ์ต์์ ์์๊ฐ ํ์ํ๋ค. Fragments๋ก ๋ถํ์ํ <div>
ํ๊ทธ๋ ์ฌ์ฉ ํ์ง ์์๋ ๋๋ค.
4. inline Styling :<div style ={{color : "red"}}Hello React</div>
5. ์๋ฐ์คํฌ๋ฆฝํธ ํํ : { ... javascript ... }