JavaScript

풋볼러브 Front (12.29)

유병각 2021. 12. 29. 16:24

풋볼러브 Front (12.29)

 

오늘 수행 작업 : 회원가입 페이지 리펙토링

 

당근마켓 프론트 개발자 Nash 에게 코드리뷰를 받았는데, 내 코드의 문제점중 하나가 회원가입 페이지에서 onChange 이벤트로 input 값이 바뀔때마다 state 를 업데이트시켜서 joinData 를 최신화 시켰었는데, 문제는 이 방법이 비효율적이라는 것이다.

그래서 Nash 는 Form 태그를 이용해서 굳이 state 를 사용할 필요 없이 간단하게 joinData 를 서버로 전송할 수 있는 방법을 알려줬고 이를 적용했다.

 

const [newUserInfo, setNewUserInfo] = useState({
        id : null, 
        pwd : null,
        nickname : null,
        address:{
            city : '서울',
            street : '중랑구 망우로 173',
            zipcode: '10234'
        },
        lastName : null, // ok
        name : null, // ok
        brith : null, // ok 
        email : null, // ok
        phone : null, // ok
        type : 'NORMAL'
    })

기존 코드에서는 위와같이 state 를 다 선언해서 input 값이 바뀔때마다 setstate 로 값을 최신화 시켜줬다면,

 

새로운 코드에서는 

const handleSubmit = (e) => {
        e.preventDefault();
        const data = { id :e.target.id.value,
                pwd : e.target.pwd.value,
                nickname: e.target.nickname.value,
                address: {
                    city: '서울',
                    street: e.target.address.value,
                    zipcode: '122'},
                name: e.target.name.value,
                birth: e.target.birth.value,
                email: e.target.email.value,
                phone: e.target.phone.value,
                type: 'NORMAL'
            }

간단하게 form 태그에 이벤트 하나를 추가해서 처리해주었다.

 

이렇게 바꿈으로써 코드의 불필요한 리랜더링을 하지 않게 되었으며, 

mui 를 사용해 기존 input 태그를 대체시켜 코드의 양도 1/4 로 줄어들었다.