【发布时间】:2020-05-11 02:17:40
【问题描述】:
我有一个组件,它使用钩子将输入值设置为组件状态。当输入值的长度超过 0 个字符时,我想添加一个类,但是我遇到了 TypeScript 说我的 ref 可能未定义的问题。
即使我检查 ref 是否存在于包装代码以添加类的条件中,我也无法摆脱这个错误。我不确定这个问题的解决方案。
错误: Object is possibly 'undefined' inputValue.current.classList.add(inputHasContentClassName);
import React, { useState, useEffect, useRef } from 'react';
const Component: React.FC = () => {
const [inputValue, setInputValue] = useState('');
const myRef = useRef();
useEffect(() => {
const inputHasContentClassName = 'input--has-value';
if (inputValue.length > 0 && inputValue) {
inputValue.current.classList.add(inputHasContentClassName);
} else {
inputValue.current.classList.remove(inputHasContentClassName);
}
}, [inputValue]);
function handleInputChange(e: React.FormEvent<HTMLInputElement>) {
setInputValue(e.currentTarget.value);
}
function handleSubmit(e: React.FormEvent) {
e.preventDefault();
console.log('Submit form');
}
return (
<>
<section>
<form onSubmit={handleSubmit}>
<div>
<input
ref={myRef}
onChange={handleInputChange}
type="number"
/>
<label>Input Label</label>
</div>
<button
type="submit"
disabled={inputValue.length === 0}
>
Submit
</button>
</form>
</section>
</>
);
};
export default Component;
【问题讨论】:
-
只添加一个 if like , if (myRef !== null) 然后做休息动作
标签: reactjs typescript