<ul className="type-list">
{assistantList.data.map((assistant: ResGetAssistantListDataType) => (
<li
className={`type-item ${currentAssistant === assistant ? 'active' : ''}`}
key={assistant.id}
onClick={() => {
setCurrentAssistant(assistant);
postThread();
}}>
<span className="type-cont">{assistant.name}</span>
</li>
))}
</ul>
currentAssistant와 assistant가 동일할 때 다른 컬러로 변경하는 효과를 주고 싶었다. 분명 같은 값을 가진 객체인데 색이 변하지 않는 문제가 발생했다.
그렇게 취준할 때 익히 배웠던 참조타입, 원시타입의 차이점이다..
이렇게 실제 현업에서 실수해보니 다시금 중요성을 느끼는 1인..
객체는 값이 아닌 주소 값을 바라보기 때문에 두 객체가 같은 값을 가지고 있어도 다른 주소 값을 참조하고 있기 때문에 다른 값이라고 인식하는 것!!
따라서 객체 자체가 아닌 객체 고유 id를 비교하는 것으로 해결할 수 있다.
<ul className="type-list">
{assistantList.data.map((assistant: ResGetAssistantListDataType) => (
<li
className={`type-item ${currentAssistant.id === assistant.id ? 'active' : ''}`}
key={assistant.id}
onClick={() => {
setCurrentAssistant(assistant);
postThread();
}}>
<span className="type-cont">{assistant.name}</span>
</li>
))}
</ul>
'Problem&Solution' 카테고리의 다른 글
react 버그 해결 (1) | 2024.06.10 |
---|---|
react hook의 호출 규칙 (0) | 2024.05.08 |
uuid를 map의 key값으로 사용하고 생긴 문제점 (0) | 2024.05.02 |
회원가입에서 생기는 고민 (0) | 2023.01.09 |
axios get해올 때 data를 담는 법 (0) | 2022.12.23 |