javascript - 多次触发使用效果
问题描述
我正在尝试在带有计数器的按钮上执行简单的 setState,并根据其状态应用不同的背景颜色。它在前 3 次按钮单击时完美运行,在第四次按钮单击时运行良好,依此类推:计数器日志
这是代码:
useEffect(() => {
const changePower = () => {
if (power === 'on') {
document.getElementById('btn-trigger').style.backgroundColor = "red";
setPower('off');
} else if (power==='off') {
document.getElementById('btn-trigger').style.backgroundColor = "lime";
setPower('on');
}
setCount(count + 1);
}
document.getElementById('btn-trigger').addEventListener('click', changePower);
console.log(count);
}, [power])
任何帮助都会很棒,谢谢!
解决方案
如果在 useEffect 中设置 Power,它会自行触发。
useEffect(() => {
if(count%2)
document.getElementById('btn-trigger').style.backgroundColor = "red";
else
document.getElementById('btn-trigger').style.backgroundColor = "lime";
}, [count])
const handeClick = () => {
setCount(count + 1);
}
推荐阅读
- powerbi - 有没有办法让用户在 Power BI 中选择 dax groupby 公式中的列?
- reactjs - 如何在 React 中映射内部地图以将其放入表格中?
- flutter - 带有多种颜色的水平线和颤动的标签?谁知道这个怎么画?我是新来的
- r - 图表中标签的数字格式
- reactjs - 如何从firebase中的引用文档中获取数据?
- python - 如何不解压附加到 .msg 的 .msg
- wordpress - SSL 续订后 CloudFront 分配不工作
- python - 通过选择全部来编辑 Google Colab 中的所有多次出现并将其作为单个操作进行编辑?有什么捷径吗?
- php - 特定服务php的清漆
- flutter - 我如何解决由颤振phone_state包引起的错误