이전까지는 class로 화면표출및 동작을 보여줬는데 function을 사용하는 방법도 있다.
id와 password 텍스트박스가 있고 그 둘에 들어간 값이 "admin"인채로 로그인 버튼을 누르면
로그인 완료 텍스트가 뜨고 admin이 아니면 아무것도 안뜨게 하는 코드를 클래스로 먼저 만들면
class App extends React.Component {
state = {
userid: '',
userpw: '',
isLogin: false
}
handleChange = e=>{
this.setState({[e.target.name]:e.target.value})
}
handleSubmit = e=>{
e.preventDefault()
if(this.state.userid === "admin"&&this.state.userpw ==="admin"){
this.setState({isLogin:true})
}else{
this.setState({isLogin:false})
}
this.setState({userid:'',userpw:''})
}
render() {
return (
<>
<form onSubmit={this.handleSubmit}>
<input type="text" name="userid" onChange={this.handleChange} value={this.state.userid} />
<input type="password" name="userpw" onChange={this.handleChange} value={this.state.userpw} />
<button type="submit">로그인</button>
</form>
{this.state.isLogin ? '로그인이 완료되었습니다' : ''}
</>
)
}
}
이런 코드가 나온다.
이걸 함수형으로 바꿔보면
function App() {
let [userid, setUserid] = React.useState("");
let [userpw, setUserpw] = React.useState("");
let [isLogin, setIsLogin] = React.useState(false);
const handleChangeUserid = e => { setUserid(e.target.value) }
const handleChangeUserpw = e => { setUserpw(e.target.value) }
const handleSubmit = e => {
e.preventDefault()
if (userid === 'admin' && userpw === 'admin') {
setIsLogin(true)
}else{
setIsLogin(false)
}
setUserid('')
setUserpw('')
}
return (
<>
<form onSubmit={handleSubmit}>
<input type="text" name="userid" onChange={handleChangeUserid} value={userid} />
<input type="password" name="userpw" onChange={handleChangeUserpw} value={userpw} />
<button type="submit">로그인</button>
</form>
{isLogin ? '로그인이 완료되었습니다' : ''}
</>
)
}
같은 내용이지만 각각의 요소에 접근할때 객체로 접근하기보단 함수로 접근한다.
예를 들어 class 로 react를 사용할때 submit 이벤트에서 요소 값을 바꿀때 this.state.[요소명] 으로 접근한다.
handleSubmit = e=>{
e.preventDefault()
if(this.state.userid === "admin"&&this.state.userpw ==="admin"){
this.setState({isLogin:true})
}else{
this.setState({isLogin:false})
}
this.setState({userid:'',userpw:''})
}
function으로 접근하게 되면
let [userid, setUserid] = React.useState("");
let [userpw, setUserpw] = React.useState("");
let [isLogin, setIsLogin] = React.useState(false);
const handleSubmit = e => {
e.preventDefault()
if (userid === 'admin' && userpw === 'admin') {
setIsLogin(true)
}else{
setIsLogin(false)
}
setUserid('')
setUserpw('')
}
이렇게 함수로 접근해서 요소값을 변경한다.
'Lecture' 카테고리의 다른 글
WebPack 에서 babel사용 설정 (0) | 2021.07.05 |
---|---|
WebPack 설정 및 실행 (0) | 2021.07.05 |
React 기본 사용 (0) | 2021.07.02 |
Promise 객체 이해하기 (0) | 2021.06.01 |
Cookie 이해하기 (0) | 2021.05.27 |