문제상황
기본적으로 React에서 state가 변경되면 컴포넌트가 자동으로 리렌더링 됩니다.
그러나 가끔 컴포넌트가 참조하고 있는 state가 변경되어도 리렌더링이 일어나지 않는 경우가 있습니다.
저의 경우 외부 CSS 라이브러리를 사용하는 경우 이런 현상이 발생했습니다.
해결방안
아래와 같은 방법으로 컴포넌트를 강제로 리렌더링하여 해결했습니다.
1. key를 별도의 state로 관리하며 목표한 state 변경 시 key state도 함께 변경하기
2. key state 변수를 div 엘리먼트의 key props로 전달하기
export default function Component() {
const [scriptCode, setScriptCode] = useState();
const [data, setData] = useState();
const [key, setKey] = useState(0);
useEffect(() => {
// setData
axios.get('/')
.then((res)=>{
setData(res.data)
})
// key state 변경
setKey(key+1)
}, []);
return (
<div key={key}>
{/* data state를 참조하는 JSX 코드 */}
</div>
);
}
반응형
'프로그래밍 > 웹 개발' 카테고리의 다른 글
[CSS, flex] flex-basis=0으로 flexbox의 사이즈를 일치시키기 (0) | 2023.05.10 |
---|---|
[React, HTML] tabIndex를 통해 키보드 focus 조정하기 (0) | 2023.05.09 |
[React, TypeScript] 브라우저 화면에서 특정 단어 검색 기능 구현 (0) | 2023.04.20 |
[React] 파일 다운로드(download) 및 헤더(header) 정보 (0) | 2023.04.18 |
[React] Button 통한 파일 업로드 및 진행상황(progress) 표시 (0) | 2023.04.12 |
댓글