官方文档:http://casesandberg.github.io/react-color/#api-onChangeComplete

组件的封装:

let React = require('react');
import { SketchPicker } from 'react-color';
export default class ColorSelect extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      color:props.color,
      key:props.objKey,
      displayColorPicker: "none",
    };
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick = ()=> {
    let {displayColorPicker,key,color} =this.state;
    displayColorPicker = displayColorPicker=="none"?"block":"none";
    this.setState({displayColorPicker})
    if(displayColorPicker){
        this.props.updateColor(key,color)
    }
  }
  handleChange = (value)=>{
      let color = value.hex;
      this.setState({color})
    
  }
  render() {
      let {color,displayColorPicker} = this.state;
    return (
      <div>
        <button onClick={ this.handleClick } style={{background:color,border:"none",lineHeight:"31px",height:31,width:45,verticalAlign: "middle"}}></button> //button色块样式
        {displayColorPicker=="block"?
        <div style={{position:"absolute",zIndex:66}}> //是选择器脱离标准流
            <SketchPicker color={this.state.color}  onChange={this.handleChange} />
        </div>
        :null
        }
      </div>
    );
  }
}

组件的使用:

import ColorSelect from './ColorPicker'

<ColorSelect 
 style={{ verticalAlign: "middle" }}
 color={useContent[key].color} //编辑的时候,用于颜色的回显
 objKey = {key} //因页面多次使用,传入key值,用于区分色块更新,因key是关键字,这里使用了objKey作为属性名                                                                          
 updateColor = {this.updateColor} //传入父组件方法,更新颜色的拾取                                                                        ></ColorSelect>   

 


版权声明:本文为Dong8508原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Dong8508/article/details/83650486