Typescript React useRef 对象可能为空(不受控制的组件)
2021-11-23
925
我尝试使用对输入元素的引用,然后使用
inputRef.current.value
获取其值
但我在
inputRef.current
处收到错误
Object is perhaps 'null'.ts(2531)
。
我尝试了几种不同的解决方案,但尚未使其发挥作用。任何帮助都值得赞赏。
interface RefObject<T> {
readonly current: T | null
}
const Uncontrolled: React.FC = () => {
// const inputRef = useRef< HTMLInputElement | null> (null);
const inputRef:RefObject<HTMLInputElement> = useRef< HTMLInputElement | null> (null);
function alertValue() {
alert(inputRef.current.value); //Object is possibly 'null', under inputRef.current
}
return (
<div>
<p> Uncontrolled components do not have state data</p>
<input type="text" ref={inputRef} />
<button onClick={alertValue}>Click Me</button>
</div>
)
}
我的解决方案来自:
1个回答
虽然您可以使用可选链或
!
来断言
.current
属性不为空……
alert(inputRef.current!.value);
更好的方法是使输入 受控 并记录状态。
const [value, setValue] = useState('');
function alertValue() {
alert(value);
}
// ...
<input value={value} onchange={e => { setValue(e.currentTarget.value); }} />
CertainPerformance
2021-11-23