1. JSX์ ์ฅ์
โ ๊ฐ๊ฒฐํด์ง ์ฝ๋ > ๋์ ๊ฐ๋ ์ฑ > ์ค๋ฅ ์ก๊ธฐ ์ฌ์
์ ๋ฒ ํฌ์คํ ์์ ๋งํ๋ฏ์ด, JSX๋ฅผ ์ฐ๋ฉด ํ๋์ JSX ์ฝ๋ ๋ด์์ JS์ HTML ์ฝ๋๋ฅผ ํผ์ฉํด์ ์ฌ์ฉํ ์ ์์๋ค. ์ด๋, JS ๋ก์ง๊ณผ ๊ทธ๊ฒ์ ์ฐ๊ฒฐํ๋ ค๊ณ ํ๋ HTML ์์๋ฅผ ํน์ ํ๋ ๋ก์ง์ ํ๋ฒ ๋ ์์ฑํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋๊ฐ ์งง์์ง๊ณ , ๊ฐ๊ฒฐํด์ง๋ค. ์ด๋ ์์ฒญ๋ ์ฅ์ ์ด๋ค.
โ Injection attack ํดํน ๋ฐฉ์ด์ ์ฉ์ด
์ด๊ฑด ๊ทธ๋ ๊ฒ ์๋ฟ๋ ๋ด์ฉ์ด ์๋๋ผ์ ๊น๊ฒ ๋ฃ์ง๋ ์์๋ค. JSX๋ฅผ ์ฐ๋ฉด ํด๋น ์ฃผ์ ์ฑ ๊ณต๊ฒฉ์ ๋ฐฉ์ดํ๊ธฐ ๋ ์ฉ์ดํ๋ค๊ณ ํ๋ค.
2. JSX ์ฌ์ฉ๋ฒ
โ HTML ์์๋ฅผ ํ๋์ JS ๋ณ์๋ก ์ฌ์ฉํ๋ค.
const element1 = <h1> Hello World!! </h1>
์๋ ๊ฒ ํ๋์ ์์๋ฅผ ๋ณ์๋ก ํน์ ์ด ๊ฐ๋ฅํ๋ค. ๋น์ฐํ ํด๋น Element ์์๋ ์์ ์์ ํ๊ทธ๋ฅผ ๊ฐ์ง ์ ์๋ค.
โ HTML ์์ ์์ JS ํจ์๋ ๋ณ์๋ฅผ ๋ฃ๊ณ ์ถ์ ๊ฒฝ์ฐ, {} ์ค๊ดํธ๋ฅผ ์ฌ์ฉํ๋ค.
const title = response.potetiallyMaliciousInput;
const element = <h1>{title} </h1>
์ด๋ฌ๋ฉด ํ๊ทธ ๋ฐ์ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ํจ์๋ ๊ฐ๋ฅํ๋ค.
function formatName(user) {
return user.firstName + ' ' + user.lastName;
}
const element = (
<h1>
Hello, {fromatUser(user)}
</h1>
)
ReactDOM.render(
element,
document.getElementById('root')
)
โ ๋ง์ฝ ํ๊ทธ์ ์์ฑ์ผ๋ก JS ๊ฐ์ ๋ฃ๊ณ ์ถ์ ์, ๋ฌธ์์ด ํํ๋ก ๋ฃ๊ฑฐ๋ {} ์ค๊ดํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
// ๋จ์ํ ๊ฐ์ ์ง์ด๋ฃ์ ๋,
const element = <div tabIndex="0"></div>;
// ํน์ ํจ์๋ ๋ณ์ ๊ฐ์ ์ง์ด๋ฃ์ ๋,
const element = <img src={user.avatarUrl}></img>