1️⃣ App.js 최상위 컴포넌트에서 회원들의 정보를 담아 관리할 useState 생성 후 회원을 저장하는 함수를 정의
// 회원 목록을 저장하는 상태
const [members, setMembers] = useState([]);
// 아이디값으로 넣을 변수
const idRef = useRef(1);
// 회원가입 시 members 배열에 사용자 추가하는 함수
const joinMember = (user) => {
const newUser = {
id: idRef.current,
email: user.email,
password: user.password,
name: user.name,
};
//기존 members의 데이터를 그대로 가져오며 새로운 user에 데이터를 가장 앞쪽에 저장한다.
setMembers([newUser, ...members]);
//아이디는 1 증가
idRef.current += 1;
};
👉 로그인 여부와 로그인 유저 정보를 업데이트하기 위해 set 함수와 로그인을 위해 조회할 members를 콜백함수로 전달 2️⃣ members에서 일치하는 회원 데이터를 찾아 로그인
export default function Login() {
//로그인 버튼 클릭 시
const onClickConfirmButton = () => {
//로그인 버튼 클릭 시 정보와 일치하는 회원을 찾아 user에 저장
const user = members.find(
(member) => member.email === email && member.password === pw
);
//만약 일치하는 데이터가 있을 경우
if (user) {
setIsLogin(true); //로그인 여부 활성화
setLoginUser(user); //로그인 유저 저장
} else {
alert("등록되지 않은 회원이거나 잘못 입력하셨습니다.");
}
}
};
👉 find 를 통해 회원 데이터에서 입력한 로그인 값과 일치하는 것이 존재한다면 해당하는 회원의 정보를 저장하고 로그인 여부 활성화