#reactjs #typescript
Вопрос:
Я использую react и typescript. Я хотел получить высоту тега div, поэтому я использовал useRef. Однако я получаю ошибку ts в текущем.
Property 'current' is not present in type 'never'. ts(2339)
const ref = useRef<HTMLDivElement>(null);
useEffect(() => {
if (ref != null || ref.current != null) {
setHeight(ref.current.clientHeight);
}
}, [user]);
Ответ №1:
Это означает, что ваше условие ref.current != null
«НИКОГДА» не будет истинным, если ref != null
оно истинно
Я вижу в вашей логике, что вы пытаетесь проверить ref.current
, не является ли значение null перед ссылкой на ref.current.clientHeight
Таким образом, правильное условие должно быть:
useEffect(() => {
if (ref !== null amp;amp; ref.current !== null) {
setHeight(ref.current.clientHeight);
}
}, [user]);
||
Условие выполняется слева направо, если вы хотите продолжать использовать свое условие, измените порядок на:
useEffect(() => {
if (ref.current !== null || ref !== null) {
setHeight(ref.current.clientHeight);
}
}, [user]);
Ответ №2:
Обратите внимание, что ошибки исчезли, когда вы меняете код на:
if (ref !== null amp;amp; ref.current != null) {
setHeight(ref.current.clientHeight);
}
Я сменил ||
«на amp;amp;
«.