简体   繁体   English

useCallback 不改变变量值

[英]useCallback not changing variable value

I am using ReactJS along side Foxglove Studio to create a custom panel with a slider on it.我在 Foxglove Studio 旁边使用 ReactJS 创建一个带有 slider 的自定义面板。 I have created the slider, but when I attach a callback to the onChange element of the slider the slider remains static and doesn't allow me to move it我已经创建了 slider,但是当我将回调附加到 slider 的onChange元素时,slider 仍然是 ZA81259CEF48E959C294ZDF1 并且不允许我移动到静态滑块

let LEDValue: number | number[] = 0;

const sliderOnChange = useCallback(
  (_event: Event, value: number | number[]) => {
    if (value !== LEDValue) {
      value = LEDValue;
    }
  },
  [LEDValue],
);

const min = 0;
const max = 254;
const step = 1;
const marks = [
  { value: min, label: String(min) },
  { value: max, label: String(max) },
];

return (
  <div style={{ padding: "1rem" }}>
    <h2>{LEDValue}</h2>
    <Slider
      min={min}
      max={max}
      step={step}
      marks={marks}
      value={typeof LEDValue === "number" ? LEDValue : 0}
      onChange={sliderOnChange}
    />
  </div>
);

No errors when I build it, I just can't drag the slider and values don't update.构建它时没有错误,我只是无法拖动 slider 并且值不会更新。 Am I missing something?我错过了什么吗?

u need useState to store Led value also the logic on function sliderOnChange seem not right...您需要 useState 来存储 Led 值以及 function sliderOnChange上的逻辑似乎不正确......

Maybe u can do like this也许你可以这样做

const sliderOnChange = useCallback(
  (_event: Event, value: number | number[]) => {
    LEDValue = value
// If using useState
setLedValue(value)
  },
  [LEDValue],
);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM