【发布时间】:2020-06-18 09:50:35
【问题描述】:
我正在使用带有 TypeScript 的 React Native,如果满足某些条件,我需要将焦点设置在输入上:
const inputEl = React.useRef<TextInput>(null);
React.useEffect(() => {
if (isLast && inputEl && inputEl.current) {
inputEl.current.focus();
}
}, []);
return (
<View>
<TextInput
ref={inputEl}
/>
上面的代码有效,但如果我删除 inputEl.current 检查,我会收到 TypeScript 错误:
React.useEffect(() => {
if (isLast && inputEl) {
inputEl.current.focus();
}
}, []);
TS2531:对象可能为“空”。
为什么会这样?我正在检查inputEl 的存在,所以如果它确实存在,它不是总是有current 属性吗?
我的代码也是正确的还是应该将类型指定为:
const inputEl: React.RefObject<TextInput> = React.useRef(null);
【问题讨论】: