Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React color ChromePicker不能正常工作_Javascript_Reactjs_Redux_React Redux_React Color - Fatal编程技术网

Javascript React color ChromePicker不能正常工作

Javascript React color ChromePicker不能正常工作,javascript,reactjs,redux,react-redux,react-color,Javascript,Reactjs,Redux,React Redux,React Color,我正在使用,并且在使用之后,我已经实现了ChromePicker 它应该如何工作: 打开镀铬机 使用色调栏和/或大正方形选择颜色 关闭ChromePicker后,我想更新道具上对象的颜色值 到目前为止,它是这样工作的: 单击其按钮时,它将打开 选择颜色不正常。当我点击色调并从侧面拖动小圆圈时,颜色正在改变,我知道这是因为有一个this.state.color,但圆圈保持不变。此外,我希望在大广场上加载现在的调色板,但它没有这样做。如果我在正方形中单击以选择颜色,它的工作原理与色调栏类似。即使值发

我正在使用,并且在使用之后,我已经实现了ChromePicker

它应该如何工作:

打开镀铬机 使用色调栏和/或大正方形选择颜色 关闭ChromePicker后,我想更新道具上对象的颜色值 到目前为止,它是这样工作的:

单击其按钮时,它将打开 选择颜色不正常。当我点击色调并从侧面拖动小圆圈时,颜色正在改变,我知道这是因为有一个this.state.color,但圆圈保持不变。此外,我希望在大广场上加载现在的调色板,但它没有这样做。如果我在正方形中单击以选择颜色,它的工作原理与色调栏类似。即使值发生变化,圆仍保持在同一位置。 该值已保存,但也无法正常工作:每次更改颜色时,都会多次调用该请求。我希望它只有在我选择了一种颜色并单击它之外的某个地方退出ChromePicker后才会改变,我想onChangeComplete可以做到这一点。 以下是它的屏幕截图:

为什么镀铬机如此糟糕?有办法解决吗?另外,我想在ChromePicker关闭后才在公司上保存新颜色,似乎onChangeComplete并不是由此触发的

代码如下:

 import React from 'react';
    import { Button, Icon } from 'semantic-ui-react';
    import { ChromePicker } from 'react-color';
    import { connect } from 'react-redux';
    import { Creators } from '../../actions';
    
    
    class Banner extends React.PureComponent {
      constructor(props) {
        super(props);
        this.state = {
          displayColorPicker: false,
        };
      }
    
      handleClick = () => {
        this.setState({ displayColorPicker: true });
      };
    
      handleClose = () => {
        this.setState({ displayColorPicker: false });
      };
    
      handleChangeComplete = colors => {
        const {
          name,
          color,
        } = this.state;
        this.setState({ color: colors.hex });
        const { updateCompany } = this.props; // company is the entity from props that is updated
                                              // it contains 2 values, its name and its color
        updateCompany(this.props.company._id, {
          name,
          color,
        });
      };
    
    
    
      render() {
        this.props.color.color.color = this.state.color;
        const popover = { // this is not essential, it's some styling for the picker
          position: 'absolute',
          zIndex: '2',
        };
        const cover = { // same as for popover
          position: 'fixed',
          top: '0px',
          right: '0px',
          bottom: '0px',
          left: '0px',
        };
        const {company } = this.props; // gets the company from props
        return (
          <div className="banner-container settings-banner">   
     
      //the below div with its style is updating in real time when the color is changed 
                  <div style={{ backgroundColor: this.state.color }}>              
                    <div>
                      <Button
                        className="select-color-btn"
                        onClick={this.handleClick}>
                        Select a color
                      </Button>
                      {this.state.displayColorPicker ? (
                        <div style={popover}>
                          <div
                            style={cover}
                            onClick={this.handleClose}
                            onKeyDown={this.handleClick}
                            role="button"
                            tabIndex="0"
                            aria-label="Save"
                          />
                          <ChromePicker
                            color={this.props.company.color}
                            onChangeComplete={this.handleChangeComplete}
                          />
                        </div>
                      ) : null}
                    </div>
                  </div>
            
          </div>
        );
      }
    }
    
    const mapStateToProps = state => ({
      company: state.companies.selectedCompany,
    });
    
    const mapDispatchToProps = {
      updateCompany: Creators.updateCompanyRequest,
    };
    
    export default connect(mapStateToProps, mapDispatchToProps)(Banner);