react - 颜色选择器

颜色选择器

nmp i react-color

import React, {useState} from "react";
import {Button, Modal} from "antd";
import {SketchPicker} from "react-color";
import styled from "styled-components";
const ColorPickerDialogWrapper = styled.div`
  .picker-wrapper {
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 30px;
  }
`
const ModalHeader = styled.div`
  text-align: center;
`
const FooterButtonWrapper = styled.div`
  display: flex;
  justify-content: center;
  align-items: center;
  .ant-btn {
    width: 120px;
  }
  .ant-btn-primary {
    margin-left: 30px;
  }
`

const FooterWrapper = (
onOk: () => void,
onClose: () => void,
confirmLoading: boolean
) => {
  return (
  <FooterButtonWrapper>
    <Button onClick={onClose} style={{ width: 120 }}>
      取消
    </Button>
    <Button
    type="primary"
    style={{ width: 120 }}
    loading={confirmLoading}
    onClick={() => {
      onOk()
    }}
    >
      确认
    </Button>
  </FooterButtonWrapper>
  )
}
export const ColorPickerDialog: React.FunctionComponent<any> = (
{
  color,
  onClose,
  setColor
}
) => {
  const [currentColor, setCurrentColor] = useState<string>(color || '#000')
  const handleConfirm = () => {
    setColor(currentColor)
    onClose()
  }
  return (
  <div>
    <Modal
    title={<ModalHeader>{'颜色选择'}</ModalHeader>}
    footer={null}
    visible={true}
    onCancel={onClose}
    style={{ minWidth: 320 }}
    centered={true}
    >
      <ColorPickerDialogWrapper>
        <section className="picker-wrapper">
          <SketchPicker
          width={'300'}
          color={currentColor}
          onChange={(color: any) => {
            setCurrentColor(color.hex)
          }}
          />
        </section>
        
        {FooterWrapper(
        handleConfirm,
        () => {
          onClose()
        },
        false
        )}
      </ColorPickerDialogWrapper>
    </Modal>
  </div>
  )
}

使用

<ColorPickerDialog
        onClose={() => {
          
        }}
        setColor={(color: string) => {
            //    选择的颜色
         
        }}
        />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值