reactjs - 使用反应钩子比较 prevstate 和 current state
问题描述
我有一个仪表,它的指针颜色(最初是灰色),我需要随着仪表值的变化而改变(变成黑色)。我尝试实现useRef()
比较值的变化并将仪表指针的颜色从灰色更新为黑色。
但它似乎没有相应地工作。始终保持最初通过的那个。
这是工作片段:
如果有任何解决方法可以实现这一点,那么请帮助实现这一点?提前致谢
解决方案
I think this works:
import React, { useState, useEffect } from "react";
import ReactSpeedometer from "react-d3-speedometer";
import "./styles.css";
export default function App() {
const [color, setColor] = useState("gray");
const [value, setValue] = useState(0.5);
useEffect(() => {
if (value > 0.5) {
setColor("black");
} else{ setColor("gray")}
},[value]);
const changeValue = e => {
console.log(e.target.value);
setValue(e.target.value);
};
console.log("current value", color);
return (
<div className="App">
<input
type="number"
min={0.5}
max={1.5}
placeholder="enter number"
style={{ margin: "20px 0 40px 0" }}
onChange={e => changeValue(e)}
/>
<ReactSpeedometer
forceRender
needleHeightRatio={0.9}
needleColor={color}
textColor={color}
needleTransition={"easeCircleInOut"}
maxSegmentLabels={11}
segments={11}
minValue={0.5}
maxValue={1.5}
customSegmentStops={[
0.5,
0.6,
0.7,
0.8,
0.9,
1.0,
1.1,
1.2,
1.3,
1.4,
1.5
]}
segmentColors={[
"Lime",
"LawnGreen",
"GreenYellow",
"DodgerBlue",
"DeepSkyBlue",
"SkyBlue",
"DarkOrange",
"Orange",
"OrangeRed",
"Red"
]}
value={value}
/>
</div>
);
}
推荐阅读
- javascript - 使用 Django 通道将 OpenCV 图像从 Python 传输到 JavaScript
- javascript - 输入时间 html,验证不允许超过 59 反应句柄变化
- git - git clean -f 和 git checkout 的区别——
- javascript - 为什么我的 for 循环不增加 var i?(更新)
- omnet++ - 如何从 MAC 层读取 RREQ 消息头
- google-cloud-platform - GCP IAM 访问被拒绝:来自另一个域的用户无权访问 Org 下的查询 BQ
- javascript - 延迟的jquery ajax
- python - Prophet - 饱和度预测最小值低于 0
- excel - 动态 SUM 函数和过滤
- angular - 使用 NgRx 时,每个 API 调用都应该派发一个动作吗?