reactjs - 在 React 中单击后鼠标单击并输入键盘禁用
问题描述
我正在尝试做的事情:我想做到这一点,以便当您用鼠标单击按钮或从键盘输入时,您以后无法再次单击它。换句话说,按一次按钮后将其禁用。
用鼠标第二次点击有效,但我无法让它与 enter 一起工作。
我的代码如下。
function HomeFood() {
const [food, setFood] = useState(null);
const [calories, setCalories] = useState('');
const [disabled, setDisabled] = useState(false);
async function foodData() {
const result = await axios.get(`link`);
console.log('DATA RESULTS:', result.data);
setFood(result.data)
}
function handleChange(e) {
setCalories(e.target.value);
}
function handleKeyPress(e) {
if (e.key === 'Enter') {
foodData()
}
}
return (
<div className="container">
<section className='food'>
<input
type='number'
onChange={handleChange}
onKeyPress={handleKeyPress}
/>
<button
onClick={() => {
foodData();
setDisabled(true);
}}
disabled={disabled}
>
Click here
</button>
</section>
{food && <FoodNutrients mealsData={food}/>}
</div>
);
}
我尝试在 onKeyPress 函数中使用禁用状态,但只会出错。我也尝试将它放在 onKeyPress 的输入中,但又出现了更多错误。
解决方案
就像onClick
, 调用setDisabled
in handleKeyPress
:
function handleKeyPress(e) {
if (e.key === 'Enter') {
if (disabled) { // do nothing if already disabled
return;
}
foodData();
setDisabled(true);
}
}
推荐阅读
- c# - C# LINQ 组和总和列表
然后在第一个列表中对另一个列表进行分组和求和 - python - Python 2.7.12 无法正常运行我的脚本
- d3.js - 在 D3 中为轴添加动态标题
- python - "issubset" 函数用于检查一个元组是否是一组元组的子集
- ios - Appdelegate.m 抛出错误
- mongodb - 新的 Guid Id - 2 GUID
- mysql - 导入表时 MAMP 本地服务器上的 phpMyAdmin 挂起
- google-analytics - 将 User-ID 发送到 Google Analytics(分析)会取代现有的 Client ID 吗?还是会完全算作新用户?
- azure - 从私有 IP 地址向我的 Web 应用程序发出大量持久请求
- reactjs - 使用 React 和 React Bootstrap 输入是否为空时的验证问题