在 React 中使用 Color Thief 库不起作用

Nad*_*d G 1 javascript reactjs color-thief

我正在努力在反应应用程序中添加 Color Thief。我已经按照 github 上的说明进行操作,但没有任何变化。我已在此处应用了建议报告,然后将脚本插入 setTimeout 函数中,但我总是遇到相同的错误:

错误

你能帮我在反应中运行这个库(或者类似的库,如果你有替代方案)吗?

到目前为止,这是我的代码:

import React from 'react';
import './App.css';
var ColorThief = require('color-thief');

function App() {
 setTimeout(function(){
    var colorThief = new ColorThief();
    var img = 'img.jpg';
    var palette = colorThief.getPalette(img, 8);
    var dominant =  colorThief.getColor(img);
    console.log(palette);
    console.log(dominant);
    document.getElementById("app").style.backgroundColor = "rgb(" + dominant + ")";
 }, 3000);

return (
    <div id="app"></div>
 );
}

export default App;
Run Code Online (Sandbox Code Playgroud)

unl*_*s20 6

使用 npm 安装库:

$ npm i --save colorthief
Run Code Online (Sandbox Code Playgroud)

将库导入到您的文件中:

import ColorThief from "colorthief";
Run Code Online (Sandbox Code Playgroud)

创建对您的图像的反应引用,如下所示:

  constructor(props) {
    super(props);

    // Image element reference
    this.imgRef = React.createRef();
  }
Run Code Online (Sandbox Code Playgroud)

图像组件应如下所示:

          <img
            crossOrigin={"anonymous"}
            ref={this.imgRef}
            src={
              "https://images.unsplash.com/photo-1516876437184-593fda40c7ce"
            }
            alt={"example"}
            className={"example__img"}
            onLoad={() => {
              const colorThief = new ColorThief();
              const img = this.imgRef.current;
              const result = colorThief.getColor(img, 25);
            }}
          />
Run Code Online (Sandbox Code Playgroud)

请注意,图像道具应严格按照此顺序排列)