▶순서3_ emotionList의 map()와 spread 연산자 이용하여, EmotionItem 컴포넌트를 렌더링 하는 쪽으로 코드 작성 =
function Editor(){
return (
emotionList.map((emotion)=>{<EmotionItem key={emotion.id} {...emotion} />})
</>)
}
★★5_ 감정 선택 시, 선택 focus 효과창 내기 : //idea 암기하자
▶순서1 : default 선택된 감정ID를 New 컴포넌트에 변수 초기화
▶순서2 : EmotionItem 컴포넌트의 props 전달을 이용해, 선택된 id와 EmotionItem의 id값과 일치하는 지 확인하는 boolean형 props도 만든다.
function Editor(){
const selectedEmotionId = 1; // 처음 렌더링 될 시, 첫번째 emotion이 선택됐다고 deafault 하기
return (<>
emotionList.map((emotion)=>
<EmotionItem
key = {emotionId}
{...emotion}
isSelected ={selectedEmotionId===emotion.id} //boolean형 props
/>)
</>)
}
▶순서3 : boolean 가 true라면, 선택됐다는 css적용 classList 적용하기
- EmotionItem.jsx
function EmotionItem({emotionId, emotionName, isSelected}){
return (<div className={`Emotionitem ${isSelected `EmotionItem_on_${emotionId}`? :""}`}></div>)
//삼항연산자를 이용하여, selected 될시, css 적용하는 방법 하기
}
- EmotionItem.css
.EmotionItem_on_1{
color : white;
background-color : emotion에 따른 배경색
}
6_ textArea 태그 css
textarea{
padding : 20px;
width : 100%;
min-height : 200px
resize : vertical; //textarea를 세로로만 늘릴 수 있고, 가로방향으로는 늘리지 못하게 막기
box-siziing : border-box; //textarea가 화면 밖으로 나가지 않도록 하는 css
}