๊ตฌํํ๊ฒ ๋ ์ด์ ?
๋
ธ๋ง๋์ฝ๋ ์ฑ๋ฆฐ์ง๋ฅผ ๋์ ํ๋ ์ค์ ์ฃผ์์ด๋ ์ฝ์ธ ์ฑ์์ ๋ณด์ด๋ฏ์ด ๊ฐ๊ฒฉ์ด ์ฌ๋ผ๊ฐ๋ฉด ๋นจ๊ฐ์์ผ๋ก ๋ด๋ ค๊ฐ๋ฉด ํ๋์์ผ๋ก ํ์๋ฅผ ํด๋ณด๊ณ ์ถ์ด์ก๋ค.
์ด๋ค ๋ฐฉ๋ฒ์ ์ฐ๋ฉด ์ข์์ง ๊ตฌ๊ธ๋ง์ ํด๋ณด๋ค๊ฐ ์ ์ ํ ๋ฐฉ๋ฒ์ด ์์ด์ ๊ณ ๋ฏผํ๋ ์ค slack ์ฑํ
๋ฐฉ์ ๋์ ๋น์ทํ ๊ณ ๋ฏผ์ ํ๋ ์ฌ๋์ด ์ง๋ฌธ๊ธ์ ์ฌ๋ ธ๊ณ , ์ด๋ค ๋ถ์ด Math.sign์ ํ์ฉํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค๋ ์๊ฒฌ์ ์ฃผ์
์ ๋ฐ๋ก ์ ์ฉํด๋ณด์๋ค.
ํ์ง๋ง ์ธ์ ๋ ๊ทธ๋ ๋ฏ ํ ๋ฒ์ ์ฑ๊ณตํ์ง ๋ชปํ๊ณ ๐ฅ ์ด๋ค ์คํจ๋ฅผ ํ์๋์ง, ๊ฒฐ๊ตญ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง ๊ธฐ๋กํด๋ณด๋ ค๊ณ ํ๋ค.
Math.sign( ) โ
์ฃผ์ด์ง ์์ ๋ถํธ(+/-)๋ฅผ ๋ฐํํด์ฃผ๋ ํจ์. ๋จ ์ ๊ณตํ ์๊ฐ 0์ด๋ผ๋ฉด +0/-0์ ๋ฐํํ๋ค.
- ๊ฐ์ด ์์ : 1์ ๋ฐํ
- ๊ฐ์ด ์์ : -1์ ๋ฐํ
- ๊ฐ์ด ์์ 0 : 0์ ๋ฐํ
- ๊ฐ์ด ์์ 0 : -0์ ๋ฐํ
- ์ด์ธ์ ๊ฒฝ์ฐ NaN์ ๋ฐํ
์์ ์ฝ๋
console.log(Math.sign(3)); // 1
console.log(Math.sign(-5)); // -1
console.log(Math.sign(0)); // 0
console.log(Math.sign('-3') // -1
๐๐ป ์์ ์์์ฒ๋ผ Math.sign(x) ์์ x๊ฐ ์ซ์๊ฐ ์๋์ด๋ ์๋์ผ๋ก ๋ณํ๋์ด ๋ถํธ๋ฅผ ํ๋จํด์ค๋ค.
์ถ์ฒ : mdnํ์ด์ง
์คํจ ๊ณผ์ ๐
์ฒ์์๋ ๋ต๋ณ์์ ๋ณธ ๋ฐฉ๋ฒ์ฒ๋ผ api๋ก ๋ฐ์ ์จ ์์์ ๊ตฌ๋ถํด์ผ ํ๋ ๊ฐ๊ฒฉ ๊ฐ์ Math.sign์ผ๋ก ๊ฐ์ธ๊ณ ์์ !! ์ฐ์ฐ์๋ฅผ ํตํด์ true, false๋ฅผ ๋๋์ด styled-component์ ์ ๋ฌํด์ฃผ๋ ค๊ณ ํ๋ค.
!!(Math.sign(ํ๋จ ๊ฐ));
๊ทธ๋ฐ๋ฐ ๋ง์ ํด๋ณด๋๊น ๊ฐ๋ค์ ์์ด ์ ๋ถ ์์์ผ ๋์ ์์์ธ ๋นจ๊ฐ์์ผ๋ก๋ง ๋์๋ค.๐ฐ
๋ญ๊ฐ ์ด์ํด์ ๊ฐ์ ์ฝ์์ ์ฐ์ด๋ณด๋ ์์น ๊ฐ๊ฒฉ์ +1๋ก ํ๋จ๋์ด true๋ก ์ ๋์ค๋๋ฐ, ํ๋ฝ ๊ฐ๊ฒฉ์ -1๋ก ํ๋จ๋์ง๋ง -1 ๋ํ true์ด๋ฏ๋ก true / false ๊ตฌ๋ถ์ด ๋์ง ์์๋ค.
๊ทธ๋ฌ๋ ๋น์ฐํ๊ฒ๋ ์์น, ํ๋ฝ ๋ชจ๋ ๋นจ๊ฐ์์ผ๋ก๋ง ๋์๋ ๊ฒ์ด๋ค. ์ด ๋ฐฉ๋ฒ ๋ง๊ณ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์จ์ผ ํ๋ค.
๋ ๋ฒ์งธ๋ก๋ ์์์ผ ๊ฒฝ์ฐ์๋ +1์ ๋ํด์ 0์ ๋ง๋ ํ false๋ก ๋ฐํํ๋ฉด ๋์ง ์์๊น๋ผ๊ณ ์๊ฐํด๋ดค๋๋ฐ, ์ผ๋จ ๊ฐ์ด ์์์ธ ๊ฒฝ์ฐ๋ฅผ ํ๋จํ๋ ๊ณผ์ ์๋ค๊ฐ ๋ค์ +1์ ์ถ๊ฐํ๋ ๊ณผ์ ์ ๋ง๋๋ ๊ฒ์ ์ฝ๋๊ฐ ๋๋ฌด ๊ธธ์ด์ ธ์ ํจ์จ์ ์ด์ง ๋ชปํ๋ค๋ ํ๋จ์ด ๋ค์๋ค.
์ต์ข ์ ์ฉ ๋ฐฉ๋ฒ ๐
๊ฐ์ ์์ ์์ ์ฌ๋ถ๋ ๊ทธ๋๋ก Math.sign( )์ผ๋ก ํ๋ณํ๊ฒ ํ๊ณ , ๋์ checkBooleanํจ์๋ฅผ ๋ง๋ค์ด ๊ฐ ์ซ์ ๊ฐ์ isPositive๋ผ๋ ์์ฑ์ด true or false๋ฅผ ๋ฐํํ๋๋ก ๋ง๋ค์๋ค.
- ๊ฐ์ด 1์ด๋ฉด ๊ทธ๋๋ก true
- ๊ฐ์ด 1 ์ด์ธ์ ๊ฐ (-1, 0)์ด๋ฉด false
๋ง์ง๋ง์ผ๋ก styled-component๋ฅผ ํตํด์ props์ ๊ฐ์ isPositive์ ๋ฐ๋ผ ๋ค๋ฅธ ์์ผ๋ก ๋ํ๋ผ ์ ์๋๋ก ์ค์ ํด์ฃผ์๋ค.
// styled component ์ ์ฉ
const PriceValue = styled.span<IItemProps>`
color: ${(props) =>
props.isPositive ? props.theme.upwardColor : props.theme.downwardColor};
`;
// checkBoolean ํจ์
function checkBoolean(value: number) {
if (Math.sign(value) === 1) {
return true;
}
else {
return false;
}
}
// ๊ฐ ํ๋จํ๊ธฐ
<PriceValue
isPositive={checkBoolean(BaseUrl.percent_change_30m)}
>
{`${BaseUrl.percent_change_30m} %`}
</PriceValue>
์ด์ ์ ์์ ์ผ๋ก ์ ์ฉ๋๋ค!!๐
์๋ง ๋ ๋์ ๋ฐฉ๋ฒ์ด ์์ ์๋ ์์ง๋ง, ์ง๊ธ ์๊ณ ์๋ ์ง์์ผ๋ก๋ ์ด ๋ฐฉ๋ฒ์ด ์ต์ ์ธ ๋ฏํ๋ค.
๋์ค์ ๋ ๋์ ๋ฐฉ๋ฒ์ ์๊ฒ ๋๋ค๋ฉด ๋ฐ๋ก ํฌ์คํ
ํด์ผ๊ฒ ๋ค.
'React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React ํ๋ก์ ํธ githubPages๋ก ๋ฐฐํฌํ๊ธฐ (0) | 2022.06.20 |
---|
๋๊ธ