JSColor onChange 事件说函数未定义

JSColor onChange Event saying function is not defined

我正在尝试使用 JSColor 的 onChange 事件来调用一个函数,但每次它触发时,我都会收到一条错误消息,指出该函数未定义。我的代码如下。

export class NavBar extends React.Component {

    constructor(props) {
        super(props);
    }

    setLinkTextColor(color)  {
        console.log("hello")
    }

    render() {
        return (
            <div className="sideOptionContainer">
                <button className="jscolor" id="jscolor1" data-jscolor="{valueElement:'#val3', onChange: 'setLinkTextColor(this)'}">,</button>
                <input id="val3" value="rgba(255,160,0)" name="color3" type="hidden"/>
            </div>
        )
    }
}

我试过将 render() 中的函数移动为 function setLinkTextColor(color),认为它可能与作用域有关,但我得到了完全相同的错误。

编辑:我尝试了以下修复,从 onChange 中删除了字符串并创建了一个全局函数 -

export class NavBar extends React.Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            <div className="sideOptionContainer">
                <button className="jscolor" id="jscolor1" data-jscolor="{valueElement:'#val3', onChange: setLinkTextColor(this)}">,</button>
                <input id="val3" value="rgba(255,160,0)" name="color3" type="hidden"/>
            </div>
        )
    }
}

function setLinkTextColor(color)  {
    console.log("hello")
}

虽然我没有再收到任何错误,但当我更改颜色输入时 onChange 事件不再触发。

由于这是 React,您需要在构造函数中绑定 setLinkTextColor 函数:

constructor(props) {
    super(props);
    
    this.setLinkTextColor = this.setLinkTextColor.bind(this);
}

然后,在您的 JSColor 配置中,您不能使用字符串,因为 JSColor 无法访问您 class 中的函数。相反,这样做:

render() {
    const jsColorConfig = {
        valueElement: '#val3', 
        onChange: this.setLinkTextColor
    };

    return (
        <div className="sideOptionContainer">
            <button className="jscolor" id="jscolor1" data-jscolor={jsColorConfig}>,</button>
            <input id="val3" value="rgba(255,160,0)" name="color3" type="hidden"/>
        </div>
    )
}