-
[React] React ColorReact.js/react 2023. 7. 5. 12:30
1️⃣ 라이브러리를 설치한다.
npm install react-colorColor Picker의 종류는 13가지가 있다.
AlphaPicker, BlockPicker, ChromePicker, CirclePicker, CompactPicker, GithubPicker, HuePicker, MaterialPicker, PhotoshopPicker, SketchPicker, SliderPicker, SwatchesPicker, TwitterPicker

2️⃣ 사용하고자 하는 곳에 React Color의 컴포넌트를 삽입한다.
import { CompactPicker } from "react-color"; export const TextColor = ({ handleTextInfoChange }) => { return ( <> <CompactPicker color={currentColor} onChange={handleColorChange} /> </> ); };3️⃣ 컴포넌트 안에 프로퍼티를 설정한다.
color
color는 선택된 색을 제어하는 props이다. 색상의 초기화나 현재 색상을 유지하는 데 사용한다.
onChange
색상이 변경될 때 마다 호출되는 함수를 전달한다. 주의할 점은 색이 변경될 때 마다 호출된다는 점이다. 만약 색이 변경되고 단 한 번만 호출하고 싶다면 onChangeComplete를 이용해야 한다.
onChangeComplete
onChangeComplete는 색상 변경이 완료되고 나서 호출하는 함수를 전달한다.
import { useState } from "react"; import { CompactPicker } from "react-color"; import { styled } from "styled-components"; export const TextColor = ({ handleTextInfoChange }) => { const [currentColor, setCurrentColor] = useState("#000000"); const [showPicker, setShowPicker] = useState(false); const handleColorChange = (color) => { setCurrentColor(color.hex); handleTextInfoChange({ target: { value: color.hex } }, "textColor"); setShowPicker(false); }; const handlePickerButton = () => { setShowPicker(true); }; return ( <> <TextColorContainer> <label htmlFor="textColor">폰트 색상</label> <PickerButton onClick={handlePickerButton} currentColor={currentColor} ></PickerButton> {showPicker && ( <Picker> <CompactPicker color={currentColor} onChange={handleColorChange} /> </Picker> )} </TextColorContainer> </> ); }; const TextColorContainer = styled.div` position: relative; `; const PickerButton = styled.button` width: 18px; height: 18px; background-color: ${(props) => props.currentColor}; margin: 0 160px 0 12px; border-radius: 5px; `; const Picker = styled.div` position: absolute; left: 5px; top: 30px; `;'React.js > react' 카테고리의 다른 글
[react] 카카오 지도(kakao map) 띄우기 (0) 2023.08.18 [react-scroll] navbar 클릭 시, 해당 컴포넌트로 스크롤을 이동하려면? (0) 2023.07.23 [React] dom-to-image로 DOM 이미지 다운받기 (0) 2023.07.05 [React] 초간단 모달창 띄우기 (0) 2023.06.27 React.Suspense로 비동기 상태 처리(feat. 로딩 띄우기) (0) 2023.06.22