【发布时间】:2020-12-15 15:18:07
【问题描述】:
当数字input 达到最大值时,我正在尝试禁用按钮。
我可以通过单击按钮来实现这一点,但在使用键盘的上/下箭头键(或输入的隐式箭头)时则不行。
我认为有些基本的东西我不太了解......
function App() {
const [value, setValue] = React.useState(0);
const max = 5;
function handleClick() {
setValue((v) => +v + 1);
}
function handleChange(event) {
const { value } = event.target;
setValue(() => value);
}
return (
<div className="App">
<input type="number" value={value} onChange={handleChange} max={max} />
<button type="button" onClick={handleClick} disabled={value === max}>
increase
</button>
<p>Button will disable at 5 when clicking `increase` button,<br /> but not when using keyboard arrow keys (inside input)</p>
</div>
);
}
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('react')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
<div id="react"></div>
【问题讨论】:
标签: javascript html reactjs react-hooks use-state