javascript - 无论滚动如何,如何在鼠标滚轮上增加 1?
问题描述
无论用户鼠标滚轮滚动多长时间,我都试图将数字加一。如果我稍微移动鼠标滚轮,它会增加 1,但如果我使用鼠标滚轮的时间更长,它会跳跃。无论如何,我将如何增加一?
const [number, setnumber] = useState(1);
const listener = e => {
e.preventDefault();
setnumber(number + 1);
};
useEffect(() => {
window.addEventListener("wheel", listener);
return () => {
window.removeEventListener("wheel", listener);
};
});
return (
<div className="App">
<h1>{number}</h1>
<h2>Number wheel</h2>
</div>
解决方案
您可以使用stopImmediatePropagation:
const [number, setnumber] = useState(1);
const listener = e => {
setnumber(number + 1);
e.stopImmediatePropagation();
};
useEffect(() => {
window.addEventListener("wheel", listener);
});
return (
<div className="App">
<h1>{number}</h1>
<h2>Number wheel</h2>
</div>
);
codesanbox:https ://codesandbox.io/s/elastic-surf-qxerb?file=/src/App.js
PS:但这会使您的代码(更改“数字”的初始数字的能力)在数字更改为“数字+ 1”后不起作用。
推荐阅读
- vba - 无法将值从 Excel 复制到 Word vba
- c++ - `std::string` 是否在内部将其字符存储为签名字符?
- javascript - 如何从反应活动导航到 Java 活动
- c++ - 功能 freopen 未读取输入
- unity3d - 材质没有纹理属性“_RendererColor”
- php - 当我将 json_decode() (在非关联模式下)转换为对象时,为什么“标量”会像这样出现?
- sql-server - TSQL - 多列上的动态数据透视
- angular - 在 Angular + Bootstrap 中动态创建行和列
- python - 按列表中匹配的任何第一项拆分文本
- android - 获取导航栏上方的 Snackbar