33import { useState } from "react"
44import styles from "./Login.module.scss"
55import { isEmptyOrNull } from "../../utils/utils"
6+ import axios from "axios" ;
7+ import { useApiMutation } from "../../hooks/useApiMutation" ;
8+
9+ const checkNicknameRequest = async ( nickname ) => {
10+ const params = {
11+ nickname
12+ } ;
13+ const response = await axios . get ( `/check-nickname` , { params } ) ;
14+ return response . data ;
15+ } ;
616
717const NicknameForm = ( { nickname, setNickname, error, setError, setInputStatus } ) => {
8- const [ isChecked , setChecked ] = useState ( false )
18+ const [ isChecked , setChecked ] = useState ( false ) ;
19+ const { mutate : checkNicknameMutate } = useApiMutation ( checkNicknameRequest , {
20+ onSuccess : ( ) => {
21+ setChecked ( true ) ;
22+ setInputStatus ( ( prev ) => ( { ...prev , nickname : true } ) ) ;
23+ } ,
24+ } ) ;
925
1026 const isValid = ( value ) => {
1127 const trimmed = value . trim ( )
@@ -15,8 +31,7 @@ const NicknameForm = ({ nickname, setNickname, error, setError, setInputStatus }
1531 }
1632
1733 const handleNicknameCheckClick = ( ) => {
18- setChecked ( false )
19- setInputStatus ( ( prev ) => ( { ...prev , nickname : false } ) )
34+ setChecked ( false ) ;
2035
2136 if ( isEmptyOrNull ( nickname ) ) {
2237 setError ( { ...error , nickname : "닉네임을 먼저 입력해 주세요." } )
@@ -27,10 +42,7 @@ const NicknameForm = ({ nickname, setNickname, error, setError, setInputStatus }
2742 setError ( { ...error , nickname : "한글,영문,숫자로 6자 이하만 가능합니다." } )
2843 return
2944 }
30-
31- // 중복 api 호출 부분 (임시로 성공 처리)
32- setChecked ( true )
33- setError ( { ...error , nickname : "" } )
45+ checkNicknameMutate ( nickname ) ;
3446 }
3547
3648 const handleNicknameChange = ( e ) => {
0 commit comments