문제점 :

다음과 같이 인풋버튼을 styled component를 이용해서 만들었다.

만들어진 페이지는 다음과 같다. 이때 onChange를 통해서 값을 받는데, 이 값이 다시 value값으로 들어가기 때문에 값을 입력할 때마다 리렌더링이 일어난다.
근데 만약 styled component를 사용하기 전에는 인풋의focus가 바뀌지 않는데, styled component를 사용하면 포커스가 바뀐다.
해결방법 :
styled component를 함수안에 넣어서 선언 할 경우에 해당 함수 자체가 같이 리렌더링이 되면서 그 안에 잇던 컴퍼넌트도 다시 만들어진다. 그렇기 때문에 새로 만들어진 component에서는 포커스가 없을 수 밖에 없다.
따라서 input값에서 계속 포커스가 바뀐 것 처럼 느껴진다.
이를 해결하기 위해서 함수 밖에 styled component를 선언하면 된다.

참고 :
react에서 styled components 사용시 input tag에서 focus를 잃어버리는 문제
react에서 styled components를 적용하기 시작하였습니다. styled components를 input tag에 적용하여 사용하던 도중 input의 onChange()함수에서 state를 변경하였습니다. 하지만 컴포넌트에서 매 입력시마다 input
velog.io
input 한글자 입력후 focus사라지는 현상 - 인프런 | 질문 & 답변
어...아래 에러는 해결했는데 로그인할때 input창에서 한글자 입력하면 focus를 잃어서 다시 입력하려면 input창을 클릭해야하는 현상이 발생하는데 이건 어디서 문제가 발생한 걸까요 제가 보이
www.inflearn.com
'TIL > 항해산 TIL' 카테고리의 다른 글
| TIL 31일차 todolist로 새 기능 추가하기 (0) | 2023.01.03 |
|---|---|
| TIL 30일차 -2 nano ID (0) | 2023.01.03 |
| TIL -29일차 리액트 id를 number로 줬을때 문제점 (0) | 2023.01.02 |
| TIL -28일차 백틱과 달러과 Children과 probs (2) | 2023.01.01 |
| TIL -27일차 - REDUX활용하기 (0) | 2022.12.31 |