π React μ λ¬Έ β ’ - JSX λ¬Έλ²
π React μ
λ¬Έ β
’ - JSX λ¬Έλ²
π
γμνμ μ²μ λ§λ 리μ‘νΈγ
λ₯Ό μ½κ³ μ 리ν κΈμ λλ€.
JSX
λ?
1
const element = <h1>Hello, world! {name}</h1>;
JSX
λ μλ°μ€ν¬λ¦½νΈλ₯Ό νμ₯ν λ¬Έλ²μΌλ‘,JavaScript eXtension
μ μλ―Ένλ€.- μκΈ° μ½λμ κ°μ΄ μλ°μ€ν¬λ¦½νΈμ
XML
,HTML
μ ν©μΉ κ²μ΄λΌκ³ 보면 λλ€. JSX
λ¬Έλ²μ μ¬μ©νλ©΄Component
λ΄λΆμμcreateElement()
λ©μλλ‘ λ체λλ€.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// JS
const element1 = React.createElement('h1', {className: 'greeting'}, 'Hello, world! ${name}'});
// JSX
const element2 = <h1 className="greeting">Hello, world! {name}</h1>;
/*
element = {
type: 'h1',
props: {
className: 'greeting'
children: 'Hello, world!'
}
}
*/
console.log(element1);
console.log(element2);
- κ°λ Ή μ μ½λμμ
element1
κ³Όelement2
λ₯Ό μ½μ λ‘κ·Έλ‘ μΆλ ₯νλ©΄ κ°μ κ²°κ³Όκ° λμ¨λ€. - μ΄μ²λΌ
React.createElement()
ν¨μλ₯Ό λ°λ‘ μ¬μ©ν΄λ λκΈ° λλ¬ΈμJSX
λ¬Έλ²μ΄ νμλ μλλ€. - μ°Έκ³ λ‘
JSX
μμλ μ€κ΄νΈλ₯Ό μ¬μ©νλ©΄ 무쑰건Javascript
μ½λκ° λ€μ΄κ°λ€κ³ ν μ μλ€.
Β JSX
μ μ¨μΌ ν κΉ?
β μ½λ κ°λ μ± ν₯μ
- Β
JSX
λ¬Έλ²μ μ¬μ©νλ©΄ μ½λκ° κ°κ²°ν΄μ§λ€. - μ΄λ μ½λ κ°λ μ±μ ν₯μ μν¨λ€.
β 보μ ν보
Injection Attack
ν΄νΉ 곡격μ λ°©μ΄ν¨μΌλ‘μ¨ μ½λμ 보μμ ν보ν μ μλ€.- 리μ‘νΈλ κΈ°λ³Έμ μΌλ‘ λ λλ§ νκΈ° μ μ μλ² λ©λ κ°μ λ¬Έμμ΄λ‘ λ³ννλ κ³Όμ μ κ±°μΉκΈ° λλ¬Έμ λͺ μμ μΌλ‘ μ μΈλμ§ μμ κ°μ κ΄νΈ μ¬μ΄μ λ€μ΄κ° μ μλ€.
- κ²°κ³Όμ μΌλ‘ μ΄κ²μ
XSS
λΌ λΆλ¦¬λCross-site-scripting Attacks
곡격μ λ°©μ΄ν μ μλ€.
1
2
const input = response.cross_site_scripting_attacks_code;
const element = <h1>{input}</h1>;
- μ μ½λμμ
input
μJavascript
μ½λκ° μλ€κ³ νλλΌλ λ¬Έμμ΄λ‘ λ³ννκΈ° λλ¬Έμ ν΄λΉ μ½λλ μ€νλμ§ μλλ€.
μ€μ΅
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import React from "react";
function Member(props) {
return (
<div>
<h3>{`π λ©€λ²μ μ΄λ¦μ ${props.name}μ
λλ€.`}</h3>
<h4>{`β
${props.name}λμ μ΄ ${props.numOfProject}κ°μ νλ‘μ νΈλ₯Ό μ§ννκ³ μμ΅λλ€.`}</h4>
<br/>
</div>
);
}
function Team() {
return (
<div>
<Member name="κΉμ§ν" numOfProject={3} />
<Member name="λ°ββ" numOfProject={4} />
<Member name="μ€β‘β‘" numOfProject={5} />
</div>
);
}
export default Team;
- λ¬Έμμ΄μ λμ μΈ κ°μ λ£μΌλ €λ©΄
${}
λ‘ κ°μΌ ν λ°±ν±μΌλ‘ νλ² λ κ°μΈμΌ νλ€.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import reportWebVitals from './reportWebVitals';
import Team from './Team';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<Team/>
</React.StrictMode>
);
reportWebVitals();
index.js
μ μμ±νTeam
Component
λ₯Ό λ£μΌλ©΄ λλ€.
νκ³
- μ± μ μ½μ λλ μ΄ν΄κ° λ κ² κ°μλλ°, μ€μ νλ‘μ νΈμ μ μ©νλ €λ μκ°μ²λΌ λμ§ μμλ€.
- μ± μ μ½μΌλ©΄μ μ€μ΅νλ κ²λ μ€μνμ§λ§ μ€μ λ‘ μ μ©ν λ λ§μ 곡λΆκ° λλ κ² κ°λ€.
This post is licensed under CC BY 4.0 by the author.