π JSX
JSXλ μλ°μ€ν¬λ¦½νΈμ νμ₯ λ¬Έλ²μ΄λ©° XMLκ³Ό λΉμ·νκ² μκ²Όμ΅λλ€.
JSX νμμΌλ‘ μμ±ν μ½λλ λΈλΌμ°μ μμ μ€νλκΈ° μ μ μ½λκ° λ²λ€λ§λλ κ³Όμ μμ λ°λ²¨μ μ¬μ©νμ¬ μΌλ° μλ°μ€ν¬λ¦½νΈ ννμ μ½λλ‘ λ³νλ©λλ€.
//JSX μ½λ
function App(){
return(
<h1>Hello</h1>
);
}
export default App;
//λ°λ²¨μ μ¬μ©νμ¬ μλ°μ€ν¬λ¦½νΈ μ½λλ‘ λ³νλ μ½λ
function App(){
return React.createElement("h1", null, "Hello");
}
μ»΄ν¬λνΈλ₯Ό λ λλ§ν λλ§λ€ JSX μ½λλ₯Ό μμ±νλ κ²μ΄ μλλΌ React.createElement ν¨μλ₯Ό μ¬μ©ν΄μΌ νλ κ²μ λ§€μ° λΆνΈν©λλ€.
π JSXμ μ₯μ
1. 보기 μ½κ³ μ΅μνλ€
μμ²λΌ μΌλ° μλ°μ€ν¬λ¦½νΈλ§ μ¬μ©ν μ½λμ JSXλ‘ μμ±ν μ½λλ§ λ΄λ κ°λ
μ±μ΄ λκ³ μμ±νκΈ° μ½λ€κ³ λκ»΄μ§λλ€.
2. νμ©λκ° λλ€
JSXμμλ div
λ span
κ³Ό κ°μ HTMLνκ·Έλ₯Ό μ¬μ©ν μ μμ λΏλ§ μλλΌ, μ»΄ν¬λνΈλ JSX μμμ μμ±ν μ μμ΅λλ€.
π JSX λ¬Έλ²
1. λΆλͺ¨ μμ νλλ‘ κ°μΈμΌ ν¨
μ»΄ν¬λνΈμ μ¬λ¬ μμκ° μλ€λ©΄ λ°λμ λΆλͺ¨ μμ νλλ‘ κ°μΈμΌ ν©λλ€.
Virtual DOMμμ μ»΄ν¬λνΈ λ³νλ₯Ό κ°μ§ν΄ λΌ λ ν¨μ¨μ μΌλ‘ λΉκ΅ν μ μλλ‘ μ»΄ν¬λνΈ λ΄λΆλ νλμ DOM νΈλ¦¬ κ΅¬μ‘°λ‘ μ΄λ£¨μ΄μ ΈμΌ νλ€λ κ·μΉ
μ΄ μκΈ° λλ¬Έμ
λλ€.
//error case
function App() {
return (
<div>Hello</div>
<div>Hi</div>
);
}
export default App;
μμ μ¬λ¬ κ°κ° λΆλͺ¨ μμ νλμ μνμ¬ κ°μΈμ Έ μμ§ μκΈ° λλ¬Έμ μ€λ₯κ° λ°μνμ΅λλ€.
** π ν΄κ²° λ°©λ²**
1. div νκ·Έλ‘ κ°μΈλ λ°©λ²μ΄ μμ΅λλ€.
2. 리μ‘νΈ v16 μ΄μλΆν° λμ λ FragmentλΌλ κΈ°λ₯μ΄ μμ΅λλ€.
import { Fragment } from 'react';
function App() {
return (
<Fragment>
<div>Hello</div>
<div>Hi</div>
</Fragment>
);
}
export default App;
μ½λ μλ¨ import ꡬ문μμ react λͺ¨λμ λ€μ΄ μλ FragmentλΌλ μ»΄ν¬λνΈλ₯Ό μΆκ°λ‘ λΆλ¬μ΅λλ€.
3. λΉ νκ·Έλ₯Ό μ¬μ©ν©λλ€.
import { Fragment } from 'react';
function App() {
return (
<>
<div>Hello</div>
<div>Hi</div>
</>
);
}
export default App;
2. μλ°μ€ν¬λ¦½νΈ νν
JSX μμμλ μλ°μ€ν¬λ¦½νΈ ννμ μΈ μ μμ΅λλ€.
μλ°μ€ν¬λ¦½νΈ ννμμ μμ±νλ €λ©΄ JSX λ΄λΆμμ μ½λλ₯Ό { }
λ‘ κ°μΈλ©΄ λ©λλ€.
function App(){
const name = 'React';
return(
<>
<div>Hello</div>
<div>{name}</div>
</>
);
}
export default App;
3. ifλ¬Έ λμ μ‘°κ±΄λΆ μ°μ°μ
JSX λ΄λΆμμλ if λ¬Έμ μ¬μ©ν μ μμ΅λλ€. νμ§λ§ 쑰건μ λ°λΌ λ€λ₯Έ λ΄μ©μ λ λλ§ν΄μΌ ν λλ JSX λ°μμ if λ¬Έμ μ¬μ©νμ¬ μ¬μ μ κ°μ μ€μ νκ±°λ, { }
μμ μ‘°κ±΄λΆ μ°μ°μλ₯Ό μ¬μ©νλ©΄ λ©λλ€.
μ‘°κ±΄λΆ μ°μ°μμ λ€λ₯Έ μ΄λ¦μ μΌν μ°μ°μμ
λλ€.
function App(){
const name = 'React';
return(
<>
{name === 'React' ? (
<div>True</div>
):(
<div>False</div>
)}
</>
);
}
export default App;
4. AND μ°μ°μ(&&)λ₯Ό μ¬μ©ν μ‘°κ±΄λΆ λ λλ§
νΉμ 쑰건μ λ§μ‘±ν λ λ΄μ©μ 보μ¬μ£Όκ³ λ§μ‘±νμ§ μμ λλ μ무κ²λ λ λλ§νμ§ μμμΌ ν λλ μ‘°κ±΄λΆ λ λλ§μ ν μ μμ΅λλ€.
function App(){
const name = 'React';
return <div>{name === 'React' && <h1>True</h1>}</div>;
}
export default App;
5. class λμ className
μΌλ° HTMLμμλ classλ₯Ό μ¬μ©νμ§λ§ JSXμμλ classκ° μλ classNameμΌλ‘ μ€μ ν΄ μ£Όμ΄μΌ ν©λλ€.
function App(){
const name = 'React';
return <div className="react">{name === 'React' && <h1>True</h1>}</div>;
}
export default App;