html - React useState 钩子附加到输入类型号而不更新鼠标滚动时的值
问题描述
我正在尝试一个简单的用例,其中输入类型编号的值应该使用鼠标滚动来更改。当我对输入使用 useState 挂钩时,它正在工作。值没有更新,而是页面正在滚动。不知道缺少什么。
请参阅示例代码块
import React from 'react'
const NumberField = () =>{
const [inputValue, setInputValue] = useState()
const handleInputChange = (event:React.ChangeEvent<HTMLInputElement>)=>{
const value = event.target.value
setInputValue(value)
}
return(
<input type="number" value={inputValue} onChange={handleInputChange}>
)
}
任何人都可以提供一个解决方案来更新滚动值,同时在输入字段中更新值时页面不应该滚动。谢谢。
解决方案
您可以使用 onWheel 事件react docs。
手柄滚轮功能
const handleWheelScroll = (event:React.WheelEvent<HTMLElement>) => {
if(event.deltaY > 0){
setInputValue(inputValue - 1);
}else{
setInputValue(inputValue + 1);
}
}
或者简而言之
const handleWheelScroll = (event:React.WheelEvent<HTMLElement>) => {
setInputValue(inputValue + (event.deltaY > 0 ? -1 : 1));
}
比你的渲染
<input onWheel={handleWheelScroll} type="number" value={inputValue} onChange={handleInputChange} />
归功于https://stackoverflow.com/a/34147719/7645069用于上下检查代码
推荐阅读
- c++ - 指向结构的指针向量的元素具有相同的地址
- ionic4 - TypeError:无法读取 *ngif 上未定义的属性“toUpperCase”-离子 4
- redis - Redis 无响应:FLUSHALL 后工作正常
- c# - C# 有没有办法验证加载的程序集?
- r - 对相同的值进行分组并将值连接到 R 的另一列中
- pytorch - 如何在 pytorch 中查看 Adam 的适应学习率?
- r - 闪亮:如何将 renderUI() 中的 sliderInput 值集成到 renderPlot() 中使用的 eventReactive()
- knex.js - Knex :当迁移失败时,仍然会创建表
- python - 比较和替换两个熊猫数据框列
- r - 在多个变量上为每个类别中的比例创建变量