๐จ react COLORIC-react์ 1.8KB ์์ ์ ํ๊ธฐ.์ ์ํ๊ณ ์์กด์ฑ์ด ์์ผ๋ฉฐ ์ฌ์ฉ์ ์ ์ ๋ฐ ์ก์ธ์ค ๊ฐ๋ฅ
9063 ๋จ์ด reactshowdeva11yjavascript
๐ ์ด์ผ๊ธฐ
๋ช ๋ฌ ์ ์ React ํ๋ก์ ํธ์ ์ฌ์ฉํ ์์ ํ๊ธฐ ๊ตฌ์ฑ ์์๋ฅผ ๊ฒ์ํ๊ณ ์์ต๋๋ค.
๋๋ ์ข์ ์ํํธ์จ์ด ํจํค์ง๋ฅผ ์ฐพ๋ ๋ฐ ๋ง์ ์๊ฐ์ ๋ค์๊ณ , ๊ฐ์ฅ ์ ํํ๋ React ์์ ์ ํ๊ธฐ
react-color
๊ฐ 140KB(์ ์ฒด๋ณด๋ค ํจ์ฌ ํฌ๋คreact-dom
, ๋๋ฌด๊ฐ ํ๋ค๋ ค์๋ ์ ๋๊ณ , ์ ๊ทผํ ์ ์๊ณ , ํค๋ณด๋ ๋ด๋น๊ฒ์ด์
์ ์ง์ํ์ง ์์ผ๋ฉฐ, 11๊ฐ์ ์์กดํญ์ ๋์ด๋ค์ผ ์ ์์ผ๋ฉฐ, ์๋๋ ๊ทธ๊ฒ๋ณด๋ค ๋น ๋ฅด์ง ์๋ค๋ ๊ฒ์ ์์์ฐจ๋ ธ๋ค.๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ
react-color
๋ ๋งค์ฃผ 170๋ง ๊ฑด์ ๋ค์ด๋ก๋๋ฅผ ๋ฐ์ ์ ๋๋ก ์ธ๊ธฐ๊ฐ ๋๋ค.๊ทธ ์ค ๊ฐ์ฅ ํฐ ์ด์ ๋ ํ๋์ ์๊ตฌ์ ์ผ์นํ๋ ๋ ๊ฐ๋ฒผ์ด ๋์ฒดํ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.๊ทธ๋์ ํ๋ ๋ง๋ค๊ธฐ๋ก ํ์ด์.์ฃผ์ ๋ชฉํ๋
react-color
๋ณด๋ค 10๋ฐฐ ์ด์ ๊ฐ๋ฒผ์ด ํ๋ ์ ์ ํ๊ธฐ ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ค.Ryan Christian, Alex Taktarov, 7์ ์ด๋๋ก ์ ๋ React ์ปค๋ฎค๋ํฐ๋ฅผ ์ํด ๊ฐ์ฅ ์๊ณ ๋น ๋ฅธ ์์ ์ ํ๊ธฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๋ ธ๋ ฅํด ์์ต๋๋ค.
๐ ์ด๊ฒ์ด ๋ฐ๋ก ๋ด๊ฐ ํ์ด๋ ์ด์ ๋ค!
ํ๋ ์ ํ ์ด์ :
https://omgovich.github.io/react-colorful
๋ฌธ์:
https://github.com/omgovich/react-colorful
react-colorful
(v4.1)์ ํ์ฌ ๋ฒ์ ์ react-color
๋ณด๋ค 18๋ฐฐ ๊ฐ๋ณ๋ค.์๋ 1.8KB๋ฐ์ ์ ๋ผ!๐ ์ ์ด๋ ๊ฒ ์๊ณ ๋นจ๋ผ?
1. ์์กด ๊ด๊ณ ์์
๋๋ถ๋ถ์ ์ ํํ๋ ์ ํ๊ธฐ๋ 10KB๊ฐ ๋๋ ์ ์ฒด ์ ์ฒ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์์ง๋ง
react-colorful
์๋์ ์๋ ์ต์ ํ๋ ์ ๋ณํ ์๊ณ ๋ฆฌ์ฆ๋ง ์ ๊ณตํ๋ค.์๋ฅผ ๋ค์ด,
react-color
๋ 14.4KB์ ๋น์ฉ๊ณผ ํธ๋ฆฌ ๋๋๋ง์ ์ ํ ์ง์ํ์ง ์๋ ๋ฑ 11๊ฐ์ ์์กด ํญ๋ชฉ์ ๋์
ํ์ต๋๋ค.์ฐ๋ฆฌ๋ ๊ฒฝ์์ด ๊ฐ์ฅ ๊ฐ๋ณ๋ค๋ ๊ฒ์ ํ๋ณดํ๊ธฐ ์ํด
tinycolor2
์์กด์ฑ์ ์์ ๋ ๋ฐ ๋ง์ ์๊ฐ์ ๋ค์๋ค.์ทจ์ฝ์ฑ ๋ฌธ์ ์ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ์ฒ ์ ํ ์ค์ธ ๊ฒ์ ๋งํ ๊ฒ๋ ์๋ค.2. ์์ ์์
์ด๋ค ๋ฌผ๊ฑด์ ๋ด์ธํด์ผ ํ ๋, ES6 ํด๋์ค๋ ๋งค์ฐ ์ข์ง๋ง, ์์ JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด, ํด๋์ค ์ฑ๋ช ์ ๋น์ ์ ๊ฐ์ฅ ํฐ ์ ์ค ํ๋๊ฐ ๋ ๊ฒ์ ๋๋ค.ํ์ฌ ์ถ์๊ธฐ๋ ES6 ํด๋์ค ํ๋์ ๊ตฌ์ฑ์ ํจ์๋ฅผ ์ถ์ํ ์ ์์ต๋๋ค. ์๋ํ๋ฉด ๋์์์ ๋ฐฉ๋ฒ์ ํธ์ถํ ๋ ํด๋์ค๋ฅผ ์ถ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก
react-colorful
ํจ์, ๊ธฐ๋ฅ ๊ตฌ์ฑ ์์์ ์ฐ๊ฒฐ๋ง ํฌํจํ๋ ์ด์ ๋ค.์ด๊ฒ๋ ์ฐ๋ฆฌ์ ์ ํ๊ธฐ ์๋๊ฐ ์ด๋ ๊ฒ ๋น ๋ฅธ ์์ธ ์ค์ ํ๋๋ค.
3. ๋ค๊ฐํ ์ฑ์ฐ๊ธฐ์ ์ถ๊ฐ ์ฝ๋ ๋ณํ ์์
์ฐ๋ฆฌ์ ๋ชฉํ๋ ํ๋ ๋ธ๋ผ์ฐ์ ๋ฟ๋ง ์๋๋ผ ์ ํต ๋ธ๋ผ์ฐ์ ๋ ์ง์ํ๋ ๊ฒ์ด๋ค.๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ฝ๋๊ฐ ์ฌ์ง์ด IE11๊ณผ ํธํ๋๋๋ก Babel์ ์ค์ ํ๋ค.
ํ๋ ์ธ์ด ๊ธฐ๋ฅ(์๋ฅผ ๋ค์ด
react-colorful
์ ์ฌ์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํ๋ฉด ๋ณดํต ์ต์ข
์ฌ์ฉ์ ์ฒดํ์ ์๋ณธ ๊ฐ๋ฐ์ ์ฒดํ์ผ๋ก ๋ฐ๊พผ๋ค.์ด๋ฌํ ํ๋ ๊ธฐ๋ฅ์ ๋ ์ข๊ณ ๊ฐ๊ฒฐํ๊ฒ ์ฐ์ผ ์ ์์ง๋ง, ๋น๊ต์ ์ค๋๋ ๋ธ๋ผ์ฐ์ ์์ ์ ์ก๋ ๋, ๊ทธ๋ค์ ํต์์ ์ผ๋ก ๋ ํฐ ๋ฌธ์ฅ์ ๋ง๋ค์ด ๋ธ๋ค.์ด๊ฒ์ด ๋ฐ๋ก ์ฐ๋ฆฌ์ ์๋ณธ ์ฝ๋๊ฐ ํ๋ ECMAScript ๊ธฐ๋ฅ์ ์์ด์ ์ด๋ ๊ฒ ์ด๋ผํ ์ด์ ์ด๋ค.์๋ฅผ ๋ค์ด ์ฐ๋ฆฌ๋
async/await
์ด ์๋๋ผ Object.assign({}, color, { alpha })
๋ฅผ ์ฌ์ฉํ๋ค.๋ค, ์๋ณธ ์ฝ๋๋ ๋ ์ค๋๋๊ณ ์์ธํ API๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ์ด๋ก ์ธํดpolyfill์ด ๋ถ์กฑํ์ฌ ๊ฐ๋ฐฉ ํฌ๊ธฐ๊ฐ ์ฝ 150๋ฐ์ดํธ ๊ฐ์ํ์ต๋๋ค.4. ์๋ ์ต์ ํ
์ฐ๋ฆฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ชจ๋ ๋ถ๋ถ์ ์ต์ ๋ณํ๋ฅผ ์ฐพ๊ธฐ ์ํด size-limit ๋ฅผ ์ค์นํ๊ณ ๋ค์ํ ๋ฐฉ๋ฒ์ ์๋ํ๋ค.
์ด๊ฒ์ ๋ง๋ก ํํํ๊ธฐ ์ด๋ ค์์ ๋๋ ๋จ์ง ๋ํฌ๋ค๊ณผ ํ๋์ ์๋ฅผ ๊ณต์ ํ ๋ฟ์ด๋ค.
์ฐ๋ฆฌ๋ ๊ฐ์ ์ํ์ ๊ณผ ํํ ์ฌ์ด์ ๋ผ์ฐ๋ ๊ฐ๋จํ ํจ์๊ฐ ์๋ค.์ด ํจ์์ ์ฒซ ๋ฒ์งธ ๋ฒ์ ์ ๋๋ค.
export const clamp = (number, min = 0, max = 1) => {
return Math.min(Math.max(number, min), max);
};
๊ทธ๋ฌ๋ ๋ช ์ฐจ๋ก์ ์คํ์ ๊ฑฐ์น ํ์ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊พธ์๋ค.export const clamp = (number, min = 0, max = 1) => {
return number > max ? max : number < min ? min : number;
};
๋น์ ์ ๋์ ๋น์ ์ ์์ด์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ ๊ธด ์ต์
์ ์ ํํ์ต๋๋ค.์?์ถ์๋ก ๋ ๋ฒ์งธ ์ฝ๋๊ฐ ๊ฑฐ์ ๋ ๋ฐฐ๋ก ์ค์ด๋ค์๋ค.์ฐธ์กฐ:Math.min(Math.max(n,i),a)
n>a?a:n<i?i:n
โค๏ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
react Color๋ ํฌ๊ธฐ, ์ฑ๋ฅ, ์ ๊ทผ์ฑ์ ๊ด์ฌ์ด ์์ต๋๋ค.๋๋ React ์ปค๋ฎค๋ํฐ๊ฐ ์ฐ๋ฆฌ์ ๊ฐ์น๊ด์ ๊ณต์ ํ๊ณ ์ง์ผ๋ณดํ ํ๋ก์ ํธ์ ์ ์ฉํ๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ๊ธฐ๋ฅผ ๋ฐ๋๋ค.
๋ง์ฝ ๋น์ ์ด GitHub์์ ํ๋งค๋ฅผ ์์ํ๊ฑฐ๋ ์น๊ตฌ์ ๋ณธ๋ฌธ์ ๋งํฌ๋ฅผ ๊ณต์ ํ๋ค๋ฉด ์ด๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ํฐ ๋์์ด ๋ ๊ฒ์ด๋ค๐
์๊ณ ๋น์น / ๋ฐ์์ด ๋ค์ฑ๋กญ๋ค
๐จ React ๋ฐ Preact ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํ ๋ฏธ์ธ(2.5KB) ์์ ์ ํ๊ธฐ ๊ตฌ์ฑ ์์
react color๋react์ Preact ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ ์ ์ ํ๊ธฐ ๊ตฌ์ฑ ์์์ ๋๋ค
ํน์ง
์์: 2.5kb gzip(react color๋ณด๋ค 14๋ฐฐ ๋ฐ์).
ํธ๋ฆฌ ํ๋ค๊ธฐ: ์ฌ์ฉํ ๋ถ๋ถ๋ง ์์ฉ ํ๋ก๊ทธ๋จ ํจํค์ง๋ก ๊ฐ์ ธ์ต๋๋ค.
์ ์: ์ฐ๊ฒฐ ๋ฐ ๊ธฐ๋ฅ ๊ตฌ์ฑ ์์๋ก๋ง ๊ตฌ์ถ๋ฉ๋๋ค.
๋ฐฉํ: ์๊ฒฉํ ๊ธ์จ์ฒด๋ก ์จ์ 40์ฌ ์ฐจ๋ก์ ํ ์คํธ๋ฅผ ๊ฑฐ์ณค๋ค.
๊ฐ๋จ: ์ธํฐํ์ด์ค๊ฐ ๊ฐ๋จํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฝ๋ค.
๋ชจ๋ฐ์ผ ์นํ์ฑ: ๋ชจ๋ฐ์ผ ๋ฐ ํฐ์น์คํฌ๋ฆฐ์ ์ ํฉํฉ๋๋ค.
์ก์ธ์ค ๊ฐ๋ฅ: ์๋ด์์ ๋ฐ๋ผ ๋ณด์กฐ ๊ธฐ์ ์ ์ง์ํ๋ ์ฌ์ฉ์.
ํ์ฅ ํ๋ ์ ํ ์ด์
์ค์น
npm install react-colorful --save
ํ์ฉ๋จ์ด์ฐธ์กฐ
"react Color"์์ {HexColorPicker} ๊ฐ์ ธ์ค๊ธฐ;
const YourComponent=()=>{
const[color,setColor]=useState(#aabbccโ);
return
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐จ react COLORIC-react์ 1.8KB ์์ ์ ํ๊ธฐ.์ ์ํ๊ณ ์์กด์ฑ์ด ์์ผ๋ฉฐ ์ฌ์ฉ์ ์ ์ ๋ฐ ์ก์ธ์ค ๊ฐ๋ฅ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/omgovich/react-colorful-1-8-kb-color-picker-for-react-fast-dependency-free-customizable-and-accessible-8leํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค