2-1. κΈ°μ΄2-2 JSXλ¬Έλ²μ΅μμ λΆλͺ¨μμλ 1κ°μ£Όμνκ·Έμ ν΄λμ€ λ£κΈ° + μ€νμΌ μ μ©νκΈ°μλ°μ€ν¬λ¦½νΈ μ¬μ©νκΈ°2-3. μ€μ΅
2-1. κΈ°μ΄
srcμ μλ App.jsλ₯Ό μμ νλ©° μ΄ν΄λ³΄κ² μ΅λλ€.
function App() { return ( <div className="App"> <header className="App-header"> <img src={logo} className="App-logo" alt="logo" /> <p> Edit <code>src/App.js</code> and save to reload. </p> <a className="App-link" href="https://reactjs.org" target="_blank" rel="noopener noreferrer" > Learn React </a> </header> </div> ); }
htmlμ μ¬μ©ν΄ 보μ
¨λ€λ©΄
return()
μμ μλ λ΄μ©λ€μ΄ μ΅μν κ±°μμ.
μ°λ¦¬κ° κΈ°λ³Έ jsμμ μμ κ°μ λ°©μμΌλ‘ μ¬μ©νλ€λ©΄ μλ¬κ° λ°μν©λλ€. νμ§λ§ μμ κ°μ λ°©λ²μ μ¬μ©νλ©΄ λ νΈνκ² μ½λλ₯Ό μμ±ν μ μμ΅λλ€. μ΄λ κ² μ½λλ₯Ό νΈνκ² μμ±νκ² ν΄μ£Όλ λ°©λ²μ΄ κΈ°μ‘΄μ jsλ₯Ό νμ₯ν jsxμ
λλ€. μ΄μ return μμ ꡬ문μ μΉ μ§μ°κ³ μλμ κ°μ΄ μμ ν΄ λ³΄μΈμ. λ€λ€λ³΄λλ‘ νκ² μ΅λλ€.function App() { return ( <h1>μλ , λΌμ΄μΊ£!</h1> ); }
μ½λλ₯Ό μμ ν ν ν°λ―Έλμμ
npm start
λͺ
λ Ήμ΄λ₯Ό μ
λ ₯νμ¬ μ€νν΄ λ΄
μλ€.npm start
Β
2-2 JSXλ¬Έλ²
μ΅μμ λΆλͺ¨μμλ 1κ°
μ΄λ²μλ h1 νκ·Έλ₯Ό μ΄μ©ν΄ 2κ°μ νκ·Έλ₯Ό μμ±νκ³ μ μ₯ν΄λ³΄κ² μ΅λλ€.
function App() { return ( <h1>μλ , λΌμ΄μΊ£ 1νΈ!</h1> <h1>μλ , λΌμ΄μΊ£ 2νΈ!</h1> ); }
μ΄λ°, μ»΄νμΌμ μ€ν¨νκ΅°μ! λ¬Έμ κ° μλ λΆλΆμ μ΄λ κ² μλ¦Όμ μ£Όλλ°μ.
jsxλ‘ ννν λμλ νλμ λΆλͺ¨λ§ κ°μ§ μ μμ΅λλ€. μ¦, μ΅μμμλ ν κ°μ νκ·Έλ§ μμ΄μΌ νλ€λ κ²μ
λλ€. μλμ κ°μ΄ μ½λλ₯Ό μμ νλ©΄ μ μ€νλλ κ²μ νμΈν μ μμ΅λλ€.
function App() { return ( <div> <h1>μλ , λΌμ΄μΊ£ 1νΈ!</h1> <h1>μλ , λΌμ΄μΊ£ 2νΈ!</h1> </div> ); }
Β
μ£Όμ
function App() { //μ¬κΈ°λ jsν λμ λκ°μ΄ μ£Όμμ μ λ ₯ν©λλ€! return ( <div>{/* μ΅μμνκ·Έλ νλλ§! */} {/* μ¬κΈ°λΆν°λ jsx! μ£Όμμ μ΄λ°μμΌλ‘ μμ±ν©λλ€~ */} <h1>μλ , λΌμ΄μΊ£ 1νΈ</h1> <h1> μλ , λΌμ΄μΊ£ 2νΈ! </h1>{/* νκ·Έλ 무쑰건 λ«μμ€μΌν©λλ€! μκ·Έλ¬λ©΄ μλ¬λμμ! */} <div/>{/* μ΄λ°μμΌλ‘ λ°λ‘ λ«νκ² ν μλ μμ΄μ! */} </div> ); }
Β
νκ·Έμ ν΄λμ€ λ£κΈ° + μ€νμΌ μ μ©νκΈ°
import './App.css'; function App() { return ( <div> <h1>μλ , λΌμ΄μΊ£ 1νΈ</h1> <h1>μλ , λΌμ΄μΊ£ 2νΈ!</h1> <div className="newClass"/> {/* classλμ className=""λ‘ μ§ν! */} </div> ); } export default App;
Β
μ, μ΄λ²μλ μμμ μμ±ν div νκ·Έμ μ€νμΌμ μ μ©ν΄ λ΄
μλ€.
μ°μ λ§λ divμ ν΄λμ€λ₯Ό λ¨Όμ μΆκ°νκ² μ΅λλ€. μ¬κΈ°μ HTMLμμμ λ¬λ¦¬ ν΄λμ€λ₯Ό μΆκ°ν λ jsxμμλ
class
λΌκ³ κΈ°μ¬νμ§ μκ³ className
μ΄λΌκ³ νκΈ°νμ¬ ν΄λμ€λ₯Ό μ μν©λλ€. ν΄λμ€λ₯Ό μΆκ°ν΄ μ£Όμλ€λ©΄ μ΄μ λ css νμΌμ μμ ν΄ λ΄
μλ€. μ°μ App.css νμΌμ μ΄μ΄λ΄
μλ€. μμ μ΄ν΄λ³΄λ©΄ App.cssλ κΈ°λ³ΈμΌλ‘ μμ±λμ΄ μλ μ½λκ° μμ΅λλ€. μμ μλ λ΄μ©μ λͺ¨λ μ§μμ€ ν μλ μ½λλ₯Ό μμ±νλ©΄ λ©λλ€. cssλ κΈ°μ‘΄μ μ°λ¦¬κ° μμ±νλ λ°©μ κ·Έλλ‘! μ¬μ©νλ©΄ λ©λλ€.
.newClass{ width: 100%; height: 20px; background-color: black; }
Β
μ μ₯ ν μ€ννλ©΄ μμ μ¬μ§κ³Ό κ°μ΄ 'μλ
, λΌμ΄μΊ£ 2νΈ!' νλ¨μ κ²μμ μ€μ΄ μκΈ΄ λͺ¨μ΅μ λ³΄μ€ μ μμ΅λλ€. cssκ° μ μ μ©λμλ€μ! in-line μ€νμΌλ‘ μ μ©νλ λ²λ μ΄ν΄λ³΄κ² μ΅λλ€.
in-line μ€νμΌλ‘ μ μ©ν λλ μ£Όμν μ μ΄ μμ΅λλ€. styleμ μ μν λλ μ€λΈμ νΈ ννλ‘ μμ±ν΄μΌ νλλ°μ! μ€λΈμ νΈ ννλ μλμ κ°μ΄ keyμ valueλ₯Ό μ§μ μ§μ΄ μμ±ν©λλ€.
{ "key":value, }
Β
μμ ν΄λμ€ μ΄λ¦μ νκ·Έμ μΆκ°ν λ
class="ν΄λμ€μ΄λ¦"
ννκ° μλ className="ν΄λμ€μ΄λ¦"
μΌλ‘ μ μμμ£ ? μ΄μ²λΌ HTMLκ³Ό λ λ€λ₯Έ μ°¨μ΄μ μ΄ μ‘΄μ¬ν©λλ€. μ€νμΌμ μ μν λλ '-'λ₯Ό μ¬μ©ν μ μμ΅λλ€. κ·Έλ κΈ° λλ¬Έμ camelCase(λ¨μ΄λ₯Ό λλ¬Έμλ‘ꡬλΆ)λ₯Ό μ¬μ©νμ¬ μμ±ν©λλ€.
μλμ κ°μ΄
backgournd-color
λΌκ³ μμ±νλ λμ backgroundColor
μ²λΌ μμ±ν©λλ€.<div style={{backgroundColor:"black", color:"white"}}></div>
Β
- λΉκ΅ν΄λ³΄μΈμ.
<h1 style={{backgroundColor:"black", color:"white"}}>μλ , λΌμ΄μΊ£ 1νΈ</h1> <h1 style='background-color:black; color:white'>μλ , λΌμ΄μΊ£ 2νΈ!</h1>
import './App.css'; function App() { return ( <div> <h1 style={{backgroundColor:"black", color:"white"}}>μλ , λΌμ΄μΊ£ 1νΈ</h1> <h1>μλ , λΌμ΄μΊ£ 2νΈ!</h1> <div className="newClass"/> </div> ); } export default App;
Β
μλ°μ€ν¬λ¦½νΈ μ¬μ©νκΈ°
μ΄λ²μλ μλ°μ€ν¬λ¦½νΈμμ λ³μλ₯Ό λ§λ€κ³ μ΄ λ³μλ₯Ό λ£μ΄λ³΄κ² μ΅λλ€. μ΄λμ μμ±νλκ³ μ? jsx λ¬Έλ² μμμ μμ±ν©λλ€. μ΄λ»κ²? λ μ΄μ ν¨κ» νμΈν΄ 보μμ£ !
μ! μλ μ½λλ₯Ό μμ±ν΄ μ£ΌμΈμ. κΈ°μ‘΄
return()
μμ const name = 'λΌμ΄μΊ£!'
μΌλ‘ λ³μ νλλ₯Ό μμ±νκ³ , return()
μ jsx νκ·Έ μμ λΌμ΄μΊ£ λμ μ€κ΄νΈλ₯Ό μ¬μ©νμ¬ nameμΌλ‘ λ³κ²½ν©λλ€. import './App.css'; function App() { const name = 'λΌμ΄μΊ£!'; return ( <div> <h1 style={{backgroundColor:"black", color:"white"}}> μλ , {name} 1νΈ </h1> <h1>μλ , λΌμ΄μΊ£ 2νΈ!</h1> <div className="newClass"/> </div> ); } export default App;
Β
μ€νμΌλ λ³μμ λ£μ΄ μ¬μ©ν μ μμ΅λλ€. 첫λ²μ§Έ h1μ μ μ©ν μ€νμΌμ
someStyle
λ³μμ ν λΉν΄ λ΄
μλ€.const someStyle = {backgroundColor:"black", color:"white"}
Β
λ³μλ₯Ό μ μΈν΄ μ€ ν μλμ κ°μ΄
style={somStyle}
μ μΆκ°νμ¬ μ€νμΌμ μ μ©ν©λλ€.import './App.css'; function App() { const name = 'λΌμ΄μΊ£!'; const someStyle = {backgroundColor:"black", color:"white"}; return ( <div> <h1 style={someStyle}> μλ , {name} 1νΈ </h1> <h1>μλ , λΌμ΄μΊ£ 2νΈ!</h1> <div className="newClass"/> </div> ); } export default App;
Β
μ΄ μΈμλ jsμμ λμνλ κΈ°λ³Έμ μΈ κΈ°λ₯λ€μ νμ©νμ¬ λ§μ κ²λ€μ ν μ μμ΅λλ€. μ΄ λΆλΆμ λ€μμ λ μ΄ν΄λ³΄λλ‘ νκ² μ΅λλ€.
νΉν λ°μ΄ν°λ₯Ό 맀ννλ λ°©λ²μ κΈ°μ‘΄μ
document.querySelector
λ±μ μ¬μ©νμ¬ μ νμλ₯Ό μ°Ύκ³ , element.innerHTML
μ ν΅ν΄ κ°μ λ³κ²½ν΄μ£Όλ λ°©λ²μ λΉν΄ λ§€μ° νΈλ¦¬ν©λλ€. κ·Έλ¦¬κ³ μ΄λ° λ°μ΄ν°λ₯Ό λ£μ΄μ£Όλ κ²μ λ°μ΄ν°λ°μΈλ©μ΄λΌκ³ ν©λλ€.Β
2-3. μ€μ΅
μμμ λ°°μ΄ λ΄μ©μ λ°νμΌλ‘ μλμ κ°μ UIλ₯Ό μΆκ°ν΄ 보μΈμ.
- κ° μκ°μ μ§μ μ λ ₯(λ¬Έμμ΄λ‘ νμ΄ν)νμ§ μκ³ μΆλ ₯νκ² λ§λ€μ΄ μ£ΌμΈμ.
- μλ‘κ³ μΉ¨ν λλ§λ€ νμ¬ μκ°μ νμν©λλ€. Tip)μλ°μ€ν¬λ¦½νΈμμ μ 곡νλ Date νμ©, λ°μ΄ν°λ°μΈλ© νκΈ°!
- μ€νμΌλ μ μ©ν΄ 보μΈμ.
μ λ΅
import './App.css'; function App() { const name = 'λΌμ΄μΊ£!'; const someStyle = {backgroundColor:"black", color:"white"}; const today = new Date(); const year = today.getFullYear(); const month = today.getMonth()+1; const date = today.getDate(); const hour = today.getHours(); const min = today.getMinutes(); const sec = today.getSeconds(); return ( <div> <div> <h1 style={someStyle}>μλ , {name} 1νΈ</h1> <h1>μλ , λΌμ΄μΊ£ 2νΈ!</h1> <div className="newClass"/> </div> <div style={{backgroundColor:"black", color:"white"}}> <h1 style={{color:'red'}}>λ : {year}</h1> <h1>μ/μΌ : {month}/{date}</h1> <h1>μκ° : {hour}μ {min}λΆ {sec}μ΄</h1> </div> </div> ); } export default App;
Β
Β
Β