Ger*_*ano 2 typescript next.js
当我尝试访问其输入目标并获取其值时,我的 vscode 在输入 onKeyUp 函数中出现错误。
import React from 'react';
import styles from './styles.module.scss';
export function Step3() {
function handleKeyUp(e: React.KeyboardEventHandler<HTMLInputElement>) {
console.log(e.target.value);
}
return (
<div className="d-flex justify-content-between">
<input
type="text"
className="f-size-30 mt-3"
name="name"
placeholder="Type your name"
onKeyUp={handleKeyUp}
/>
</div>
);
}Run Code Online (Sandbox Code Playgroud)
我的“e”参数应该是什么类型?
考虑一下这个名字:
React.KeyboardEventHandler
Run Code Online (Sandbox Code Playgroud)
处理程序通常是处理事件的函数的名称- 它是回调,而不是事件本身。事件是处理函数的参数,但处理函数不是事件参数。
如果您想使用该React.KeyboardEventHandler类型,请将handleKeyUp函数注释为该类型。
您还需要访问currentTarget,而不是target。
export function Step3() {
const handleKeyUp: React.KeyboardEventHandler<HTMLInputElement> = (e) => {
console.log(e.currentTarget.value);
}
return (
<div className="d-flex justify-content-between">
<input
type="text"
className="f-size-30 mt-3"
name="name"
placeholder="Type your name"
onKeyUp={handleKeyUp}
/>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
另一种选择(当处理程序很短时我更喜欢这种选择)是内联定义它,以便可以自动确定类型,并且您不必费力自己找出正确的名称:
export function Step3() {
return (
<div className="d-flex justify-content-between">
<input
type="text"
className="f-size-30 mt-3"
name="name"
placeholder="Type your name"
onKeyUp={(e) => console.log(e.currentTarget.value)}
/>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1572 次 |
| 最近记录: |