개발/React(ReactNative)
[React] react 회원가입 폼 만들기
piece5
2023. 7. 26. 22:37
백엔드 : express
프론트엔드 : react typescript, bootstrap
데이터베이스 : ??
프론트엔드 부분부터 설명!
1. 리액트 설치
npm install -g create-react-app
2. 리액트 + 타입스크립트 프로젝트 만들기
npx create-react-app [프로젝트 이름] --template typescript
cd [프로젝트 이름]
3. bootstrap 설치하기
npm install react-bootstrap bootstrap --save
4. src 폴더 정리 (정리가 안 되어 있기 때문에 정리해줌)
5. 회원가입 컴포넌트 만들기
- components 폴더에 SignUp.tsx 파일 만들기
import React from 'react';
interface SignUpssProps {
mark?: string;
};
const SignUps: React.FC<SignUpssProps> = ({ mark }) => {
return (
<div>
</div>
);
};
export default SignUps;
- App.tsx에 컴포넌트 추가
- interface에 옵션 형식 변수를 사용하면 prop 값을 넘겨주지 않아도 된다.
import React from 'react';
import './styles/App.css';
import SignUps from './component/SignUp'
function App() {
return (
<div className="App">
<SignUps />
</div>
);
}
export default App;
- 부트스트랩을 이용하여 회원가입 폼 작성
- onchage를 사용하여 입력값이 바뀌었을 때 state변수를 바꿔준다.
return (
<div>
<Form>
<div className="mb-3">회원가입</div>
<Form.Group as={Row} className="mb-3" controlId="formHorizontalEmail">
<Form.Label column sm={2}>
Email
</Form.Label>
<Form.Control type="email" placeholder="email" onChange={(e) => {setEmail(e.target.value)}}/>
</Form.Group>
<Form.Group as={Row} className="mb-3" controlId="formHorizontalEmail">
<Form.Label column sm={2}>
Name
</Form.Label>
<Form.Control type="name" placeholder="name" onChange={(e) => {setName(e.target.value)}}/>
</Form.Group>
<Form.Group as={Row} className="mb-3" controlId="formHorizontalEmail">
<Form.Label column sm={2}>
Password
</Form.Label>
<Form.Control type="password" placeholder="password" onChange={(e) => {setPassword(e.target.value)}}/>
</Form.Group>
<Form.Group as={Row} className="mb-3" controlId="formHorizontalEmail">
<Form.Label column sm={2}>
Confirm Password
</Form.Label>
<Form.Control type="password" placeholder="password" onChange={(e) => {setPasswordConfirm(e.target.value)}}/>
</Form.Group>
<Form.Group as={Row} className="mb-3" controlId="formHorizontalCheck">
<Col sm={{ span: 10, offset: 2 }}>
<Form.Check label="Remember me" onChange={(e) => {setCheck(e.target.checked)}}/>
</Col>
</Form.Group>
<Form.Group as={Row} className="mb-3">
<Col sm={{ span: 10, offset: 2 }}>
<Button
type="button"
onClick={submit}
>
Sign Up
</Button>
</Col>
</Form.Group>
</Form>
</div>
);
- 필요한 state 변수 정의
- useState?
- React Hook : 특별한 함수
- state를 함수 컴포넌트 안에서 사용할 수 있게 해준다
- useState는 클래스 컴포넌트의 this.state가 제공하는 기능과 똑같다. 일반적으로 일반 변수는 함수가 끝날 때 사라지지만, state 변수는 React에 의해 사라지지 않습니다.
import React, { useState } from 'react';
...
const SignUps: React.FC<SignUpssProps> = ({ mark }) => {
const [email, setEmail] = useState("");
const [name, setName] = useState("");
const [password, setPassword] = useState("");
const [passwordConfirm, setPasswordConfirm] = useState("");
const [check, setCheck] = useState(false);
...
- 간단하게 입력값이 채워져있는지 체크해준다
const submit = () : void => {
if ((email === "" ||
name === "" ||
password === "" ||
passwordConfirm === "") ||
check === false) {
alert('check')
return;
}
console.log(email, name, password, passwordConfirm, check);
}