Frontend Study - 2/시행착오

프로젝트 리뷰 리체크

갓데미 2022. 7. 23. 17:51

1. sass : focus 시에 &focus 연산자 활용. 

 

2. 굳이 버튼을 만들지 않아도 되는 함수들. 

즉 다이렉트로 조건으로 쓸 수 있는 것들 확인해서 중간단계 없애기.

ex) 변수의 조건이 참이라면 버튼을 true로 만들어라. 버튼이 true라면 효과를 적용해라 (x)

-> 변수의 조건이 참이라면 효과를 적용해라(o)

시작값에 자동으로 적용되는 문제가 있다. 조건부렌더링으로 해결. ( length > 0 && condition ? ~ : ~)

 

3. CSS property 순서

  • Layout Properties (position, float, clear, display)
  • Box Model Properties (width, height, margin, padding)
  • Visual Properties (color, background, border, box-shadow)
  • Typography Properties (font-size, font-family, text-align, text-transform)
  • Misc Properties (cursor, overflow, z-index)

 

4. import 순서 

React Library(Package) Component 변수 / 이미지 css 파일(scss 파일)

 

 

5. 함수로 만들어서 가독성을 높일 수 있는 것들에 대하여 생각하기 (바로 인라인으로 fetch 넣지 말고 함수로 만들어서 사용)

 

 

6. onFocus={e => {}) : 사용하지 않는 e빼기

 

 

7. () 불필요한 괄호가 있는지 확인. 

 

<form className="login-main" onSubmit={loginFetch()}>

          <form className="login-main" onSubmit={loginFetch}>

 

8.   setInputTitleGoUpBtn(prev => !prev);

 

 

9. useNavigate -> LINK 로 변환 

단순하게 페이지를 이동할 경우에는 button onclick 이벤트를 걸어주는 보다  

Link 컴포넌트를 사용하는 것이 좋습니다!

 

 

10. 

 

body : JSON.stringify({

korean_name,

email,

password,

address,

phone_number,

})

 

->

 

body : JSON.stringify(signInput),

 

 

11. 상수데이터 관리. 긴 상수데이터는 별도 파일 만들어서 관리. 

 

const userInputData = [

    {

      name: 'korean_name',

      koreanName: '이름',

      condition: 'nameCondition'

      inputValue: 'korean_name',

    },

    {

      name: 'email',

      koreanName: '이메일',

      condition: 'emailCondition',

      inputValue: 'email',

    },

 

 

13.

컴포넌트 맵을 돌리는 전달값중에 함수가 들어있을 때, 즉 상수데이터 안에 함수 값이 들어 있을 때, 

목데이터 함수값으로 이용하기. 

 

오브젝트.  키 : 값으로 만들어주기 !!

 

 const signConditions = {

    nameCondition: korean_name.length > 1,

    emailCondition: emailRegex.test(email),

    pwdCondition: pwdRegex.test(password),

    phoneCondition: phoneRegex.test(phone_number),

    addressCondition: address.length > 3,

  };

 

 

   <UserInput

                  key={i}

                  name={element.name}

                  koreanName={element.koreanName}

                  condition={`${element.condition}`}

                  inputValue={inputValue[`${element.name}`]}

                  loginInputHandler={signInputHandler}

                />

 

  <UserInput

                  key={i}

                  name={element.name}

                  koreanName={element.koreanName}

                  condition={signConditions[`${element.condition}`]}

                  inputValue={signInput[`${element.name}`]}

                  loginInputHandler={signInputHandler}

                />

 

 

 

14 . 작은 컴포넌트의 분리 

작은 컴포넌트를 따로 분리 가독성과 유지보수 측면에서 그리 좋은 방법은 아님.

그 컴포넌트가 다른데서 쓰여야 한다면 공통 컴포넌트로 빼서 관리 -> 그게 아니라면 코드를 그대로 작성해서 map을 돌리는 것.