const changeNumberToText = value => {
switch (value) {
case '1':
return '일';
case '2':
return '이';
case '3':
return '삼';
case '4':
return '사';
case '5':
return '오';
case '6':
return '육';
case '7':
return '칠';
case '8':
return '팔';
case '9':
return '구';
default:
return '';
}
};
export const formatPriceToText = input => {
const formatedValue = input
.split('')
.reverse()
.map((str, index) => {
const formattedValue = changeNumberToText(str);
if (str === '0') {
return '';
}
switch (index % 4) {
case 1:
return `${formattedValue}십`;
case 2:
return `${formattedValue}백`;
case 3:
return `${formattedValue}천`;
case 0:
return index === 0 ? formattedValue : `${formattedValue}만`;
default:
return formattedValue;
}
})
.reverse()
.join('');
return formatedValue;
};
천 단위가 넘어 갔을 때 '만'이 안 붙는다
const addNumberUnit = (str, index) => {
const formattedValue = changeNumberToText(str);
if (str === '0') {
return '';
}
switch (index % 4) {
case 1:
return `${formattedValue}십`;
case 2:
return `${formattedValue}백`;
case 3:
return `${formattedValue}천`;
default:
return formattedValue;
}
};
export const formatPriceToText = value => {
const reversedValueArr = value.split('').reverse();
const thousandUnitValue = reversedValueArr
.slice(0, 4)
.map((str, index) => addNumberUnit(str, index))
.reverse()
.join('');
const tenThousandUnitValue =
value.length <= 4
? ''
: reversedValueArr
.slice(4)
.map((str, index) => addNumberUnit(str, index))
.reverse()
.join('')
.concat('만');
return tenThousandUnitValue + thousandUnitValue;
};
카드 애니메이션이 처음 바로 시작한 후, 스크롤이 끝나면 멈추기 때문에
사용성을 고려해서 카드 리스트의 가장 처음/ 끝으로 이동시켜주는 버튼 구현했다
const handleClickFrontButton = () => {
containerDom.scrollLeft = 0;
setIsPlayMove(true); // 스크롤 시작점으로 돌아간 후 애니메이션을 다시 실행시켜준다
};
const handleClickBackButton = () => {
containerDom.scrollLeft = containerDom.scrollWidth;
};
문제점
카드리스트 컨테이너에 마우스를 올렸을 시 버튼들이 나타나도록 구현하려고 했다
카드리스트 컨테이너 뿐만 아니라 버튼들 각각에 호버 했을 때에도 본인들이 나타나도록 구현해야했는데,
상대의 버튼까지 나타나도록 할 수가 없어서 실패했다