1. input에서 한 글자 입력 후 focus를 잃는 현상
react로 input을 사용하다보면, 가끔 한 글자 입력 후 input의 focus가 사라지는 현상이 발생한다.
이러한 현상의 원인은 100% state의 변경 등으로 인해 해당 Input이 re-render 되기 때문이다
State 변경으로 인한 re-render
1. input만 함수 or 컴포넌트로 따로 묶는 경우
export default function Editor() {
const [name, setName] = useState("");
const onChange = (e) => {
const {value} = e.target;
setName(value);
}
const Input = () => (<input name="name" value={name} onChange={onChange} />)
// 한 글자 입력할 때마다 state가 변경 -> Input 컴포넌트가 re-render됨 -> focus 잃음
// input을 아래 return에 바로 넣어줘야 함
return (
<div>
<Input/>
</div>
)
}
2. map의 key 값에 함수 값을 주는 경우
key 값으로 nanoid() 등을 주는 경우, state가 변경될 때마다 nanoid()가 새롭게 실행되어 input이 새롭게 re-render 됨 → focus 잃음
3. input이 있는 styled-component 객체를 jsx 컴포넌트 안에 선언하는 경우
state가 변경될 때마다 styled-component 변수를 새롭게 선언함 → focus 잃음
https://www.inflearn.com/questions/121968
2. string으로 js object 값에 접근하기 - reduce 사용
const obj = {
lego: {
name: "hello",
},
};
const string = "lego.name";
const result = string.split(".").reduce((acc, cur) => acc[cur], obj); // hello
'TIL(Today I Learned) > 2022년' 카테고리의 다른 글
03.22 - Next.js > window 등 client 객체 사용 / tailwind css의 mobile first (0) | 2022.03.23 |
---|---|
02.21 - 자바 챔피언 양수열님의 조언 (0) | 2022.02.22 |
01.25 - 브라우져별 지원하는 동영상 format이 다를 수 있다 (0) | 2022.01.25 |
01.24 - react-query 특정 조건일 때 fetch하도록 하기 (0) | 2022.01.24 |
01.20 - PM을 내려놓으며 배운 것들 (0) | 2022.01.20 |