- Hello React !
- JSX
- JSX๋ ?
- ํํ์
- JSX์ ์์
- JSX์์์ ์ด๋ฒคํธ ์ฒ๋ฆฌ
- Component
- ์ปดํฌ๋ํธ๋ ?
- ์ด๋ป๊ฒ ๋ถ๋ฌ์ฌ๊น ?
- ์ปดํฌ๋ํธ ์์ฑ
- ์ปดํฌ๋ํธ ์ธ์คํด์ค ์์ฑ
- ๊ณ์ฐ ๋ฐ ์กฐ๊ฑด๋ฌธ์ ?
- ์ปดํฌ๋ํธ ๋ด์ this์ ์ด๋ฒคํธ ๋ฆฌ์ค๋
React์์๋ ๋ณธ์ง์ ์ผ๋ก ๋ ๋๋ง ๋ก์ง์ด UI ๋ก์ง๊ณผ ์ฐ๊ฒฐ๋๋ค.
React๋ ๋ณ๋์ ํ์ผ์ ๋งํฌ์ ๊ณผ ๋ก์ง์ ๋ฃ์ด ๊ธฐ์ ์ ์ธ์์ ์ผ๋ก ๋ถ๋ฆฌํ์ง๋ง !
๋ (๋งํฌ์ , ๋ก์ง) ํฌํจํ๋ "์ปดํฌ๋ํธ"๋ผ๊ณ ๋ถ๋ฅด๋ ๋์จํ๊ฒ ์ฐ๊ฒฐ๋ ์ ๋์ผ๋ก ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ๋ค.
const element = <h1>Hello, World !</h1>;
์์ ๋ฌธ๋ฒ์ ๋ฌธ์์ด๋, HTML๋ ์๋ JSX ์ด๋ค.
const name = 'Josh Perez';
const element = <h1>Hello, {name}</h1>;
ReactDom.render(
element,
document.getElementById('root')
);
name์ด๋ผ๋ ๋ณ์ ์ ์ธ ํ, ์ค๊ดํธ๋ก ๊ฐ์ธ JSX ์์์ ์ฌ์ฉํ๋ค.
JSX์ ์์
JSX ์์๋ ๋ณ์์ ํ ๋น ๋ฐ ํจ์์ ์ ๋ฌ, ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์ ์ฅํ ๊ฒ์ด JS ํํ์๊ณผ ๊ฐ๋ค.
HTML์ฒ๋ผ JSX์์์ attribute ์ถ๊ฐ๋ํ ๊ฐ๋ฅํ๋ค.
function funcTest(){
alert('hello');
}
<button onClick={funcTest} />
๋ฆฌ์กํธ App์ ์ปดํฌ๋ํธ๋ค๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
import React from 'react'; // ๋ฆฌ์กํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ถ๋ฌ์ค๊ธฐ
import ReactDOM from 'react-dom'; // DOM์ ๋ฐ์ํ๋๋ฒ
import React, { Component } from 'react';
class aaa extends Component { // ํด๋์ค ์ปดํฌ๋ํธ / rcc ๋จ์ถํค
render() {
return (
<div>
</div>
);
}
}
export default aaa;
import React from 'react';
const aaa = () => { // ํจ์ ์ปดํฌ๋ํธ / rsc ๋จ์ถํค
return (
<div>
</div>
);
};
export default aaa;
๋ค์๊ณผ ๊ฐ์ด ๋๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ปดํฌ๋ํธ ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
ํด๋์ค๋ช ์ ๋ฐ๋์ ๋๋ฌธ์๋ก ์์ํ๋ ์นด๋ฉ์ผ์ด์ค ๋ฐฉ์์ผ๋ก ์์ฑํ ๊ฒ !
ํด๋์ค ์ปดํฌ๋ํธ ๋ด์๋ ๋ฐ๋์ render( )๊ฐ ํฌํจ๋์ด์ผ ํ๋ค.
<aaa></aaa>
import React, { Component } from 'react';
class aaa extends Component {
render() {
// ๋ฆฌํด์ด ๋๊ธฐ ์ ์ ์กฐ๊ฑด๋ฌธ์ด๋ ๊ณ์ฐ์ ํด์ฃผ๋๋ก ํ์.
const sum = 1 + 2;
return (
<div>
<h1>Sum is {sum}</h1>
</div>
);
}
}
export default aaa;
import React, { Component } from 'react';
class aaa extends Component {
testFunc(){
alert('hello ?!');
}
render() {
return (
<div>
onClick={function(e){ // ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฉ์๋๋ก ์ ์ํจ.
e.preventDefault();
this.testFunc // this๋ ์ปดํฌ๋ํธ ์ธ์คํด์ค๋ฅผ ์ง์นญํ๋ค.
}}
</div>
);
}
}
export default aaa;
๋ค์์ผ๋ก๋ State์ Props์ ๋ํด ์์๋ณด์.