[React] React의 사용방법 간단예제 (2)
이전 포스팅에 이어서 간단한
간단 예제를 만들겠습니다.
기존 DOM 방식을 사용하여
1. 버튼을 하나만들고,
2. 버튼이 클릭될때마다
3. Login , LogOut 으로 바뀌는
코드를 작성해보겠습니다!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div id="root"></div>
<script type="text/javascript">
const root = document.querySelector('#root')
const button = document.createElement('button')
button.addEventListener('click', (e) => {
if (e.target.innerHTML === 'Login') {
e.target.innerHTML = 'Logout'
} else {
e.target.innerHTML = 'Login'
}
})
button.innerHTML = 'Login'
root.append(button)
</script>
</body>
</html>
간단하게 div 하나를 만들어준 뒤에 ,
document.querySelector()를 사용하여 해당 엘리먼트를 선택 하였고
document.createElement('button')을 이용하여 버튼을 생성하였습니다!
버튼을 클릭하면 이벤트가 발생되며 , e.target.innerHTML에 따라서 Login / LogOut으로 바뀌는 로직입니다.
위의 DOM 형식을 -> React로 만들어 보겠습니다!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
<script
crossorigin
src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"
></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
class LoginBtn extends React.Component {
constructor(props) {
super(props)
this.state = {
isLogin: false,
}
}
render() {
return (
<button
onClick={() => {
this.setState({ isLogin: !this.state.isLogin })
}}
>
{this.state.isLogin ? 'Logout' : 'Login'}
</button>
)
}
}
const root = ReactDOM.createRoot(document.querySelector('#root'))
root.render(<LoginBtn />)
</script>
</body>
</html>
코드 해석을 해드리면
1. React를 사용하기 위해서 script CDN 3개를 불러왔습니다
1-1) React CDN
1-2) ReactDOM CDN
1-3) Babel CDN
SPA를 구현하기위해 <div id="root"></div>를 하나 두었고 ,
JSX 형식을 사용하기위해 script type 을 "text/babel" 로 설정하였습니다.
const root = ReactDOM.createRoot(document.querySelector('#root'))
-> ReactDOM 으로 가상의 DOM을 설정합니다 ( 최초로 조작하는 DOM을 설정하는거라 생각하시면 됩니다)
그리고 root.render(<LoginBtn />) 이 실행되는데 앞에 포스팅에서 말했다 싶이 ,
JSX문법으로 표현하였습니다.
class LoginBtn은 React.Component를 상속받았습니다!
그리고 랜더가 될경우( render() )
return값으로
<button onClick={()=>{this.setState({isLogin: !this.state.isLogin})}}> {this.state.isLogin ? 'LogOut' : 'Login' }</button>
을 반환합니다
JSX 문법을 사용하였고 , this.setState({isLogin: !this.state.isLogin}) 을 통해 onClick 진행시 , 상태를 true / false로 바꿔줍니다!
<button></button> 사이의 { } 값은 Javascript 문법을 사용하기위해 { }로 표현하였습니다.
오늘은 간단예제를 하나 들어보았습니다.
다음포스팅에는 댓글을 만드는 예제를 한번 진행해보겠습니다!