회원가입 페이지를 만들고 있는데...
입력 시 한글자 입력할 때 마다 커서가 focus를 잃어서 골머리를 앓고 있었다.
계정 생성 때마다 마우스를 계속 클릭해야되는 불상사가 발생한 것이다.
어떻게 해야되나 하면서 검색을 계속 해보았다.
도움이 되었던 것은 다음 포스팅이였다.
본인의 경우는 아래와 같이 작성한 것을 고쳐주니 해결이 되었다.
export default function CreateAccount() {
...
// styled-component
const CSSPart = styled.tag`
...
`;
...
// jsx
return (
...
);
}
// styled-component
const CSSPart = styled.tag`
...
`;
export default function CreateAccount() {
...
// jsx
return (
...
);
}
즉, styled-component
를 아예 function 밖으로 꺼내주었다. 그 결과 다음과 같이 focus out 되는 현상이 없어졌다.
styled-component
객체가 원래 jsx
안에 있으면 useState
가 변경됨에 따라 입력시 마다 재성성되므로 멈춘다. 본인의 경우 jsx
안까지는 아니고 export function
안에 넣어두었는데, 이 역시도 다른 파일에서 가져가면서 계속 재성성되는 듯 했다.
component
를 만들 때에는 반드시 분리하자. 특히 styled-component
는 아예 따로 파일을 만드는 것도 방법이다.