kakao 헤더영역 영어버전 한국어버젼 토글

미마모코딩·2022년 9월 9일
0

카카오 헤더 영역

목록 보기
4/5
post-thumbnail

kakao 헤더영억을 next js , typeScript를 사용해서 프로그램을 짜고있었다.

layer를 만들어 파일을 나누고 , 함수를 props로 전달하는 과정에서 작은 이슈가 생겼다.

const [language,setLanguage] = useState("kakao")
로 스테이트를 만들었다.

const KaKaoLanguageGhange = ()=>{
setLanguage((cur)=>(cur === "kakao" ? "kakao_english" : "kakao"
))
}
로 함수를 짜고 language를 참조하게 만들었다.

Link href =`${language} ` << 로말이다.

위 함수와 state를 KakaoHomePage라는 컴포넌트로 상태 끌어올리기를했고, props로 전달해주는중 영어페이지로 이동하지만 영어에서 다시 한국어 버전으로 돌아오는데 어려움을 겪었다.

그래서 테스트를 진행하던중 util component안에서 저 함수를 써보니 정상적으로 동작했다 .

하지만 두번씩 클릭해야 스테이트가 바뀌는것을 알았고 그 이유는 아직도 찾아가는 중이다.

의심되는 부분은 이런것이다 . console.log() << 스테이트를 확인했을때

이전 스테이트가 먼저 찍힌다 . useState는 비동기로 동작하기때문에 당연하게
console.log()가 먼저 찍히는 이슈이기도 했다.

(정확하게는 setState가 비동기로 동작)

이 이슈를 해결하기 위해선 찾아낸 방법이 두가지였다.

1.제일위에 작성한 코드처럼 setState안에 함수를 넣어서 동작시키는 것
ex)) setLanguage((cur)=>(cur === "kakao" ? "kakao_english" : "kakao" ))

2.다른 하나는 useEffect를 사용해 의존성 배열에 state의 값이 바뀔때마다 리랜더링 시키는것 .

하지만 두번째 방법은 내가 생각하는것보다 비효율적으로 동작할 것 같기에 사용하지 않았다.

그래서 1번의 방법으로 동기적으로 처리했음에도 불구하고 두번씩 클릭해야하는것은 link href와 state의 데이터 연결 시점이 뭔가 잘못되지 않았을까 하는 생각이다 . 조금 더 찾아보고 자료를 모아서 이 이슈를 해결해야겠다.

0개의 댓글

관련 채용 정보