reactjs 在react js中只在释放鼠标时更改html输入类型颜色

mtb9vblg  于 2023-01-17  发布在  React
关注(0)|答案(2)|浏览(132)
<input className="color-palatte" type="color" onChange={(e) => onColorChange(e)} />

由于我在onChange()方法上使用API调用,我不想在滑过颜色时调用API,而只想在释放它时调用。

agxfikkp

agxfikkp1#

您可以使用onMouseUp
关于颜色更改(e)}/〉
https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseup_event

    • 编辑**

好吧,就我所知,你的问题是每次你用颜色选择器在弹出模式中调整颜色时都会触发这个事件。根据docs,你只能使用onChangeonInput事件,而且这两个事件都会在每次颜色变化后触发。不幸的是,似乎没有办法绕过这个问题。

pxy2qtax

pxy2qtax2#

我迟到了,但是我通过在api调用中使用timeout来解决这个问题,基本上,在onChange中,你将api调用超时几毫秒,并取消之前的超时,这样,只有当用户在当前超时之前没有改变颜色时,你的api才会被调用。
现在用户可以在颜色选择器上滑动,而无需运行大量的api调用。
示例:

const App = () => {
    const [apiTimeout, setApiTimeout] = useState(0); // <-- Stores timeout reference

    const apiCall = (color) => {
        // Your api call
    }

    return (
        <input
            type="color"
            onChange={e => {
                // In case timeout was already set, clear it
                clearTimeout(apiTimeout);

                // Set the next timeout
                setApiTimeout(
                  setTimeout(() => {
                    apiCall(e.target.value);
                  }, 300) // <-- Delay api call by 300 milliseconds. Set to what you prefer
                );
            }}
        />
    )
}

相关问题