reactjs - react typescript 'current' finns inte i typen 'never'


Jag använder React och TypeScript. Jag ville få höjden på div-taggen, så jag använde useRef. Men jag får ett ts-fel i current.

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]);

Svar #1

Detta betyder att ditt villkor ref.current != null kommer att "ALDRIG" vara sant om ref != null är sant

Jag kan se i din logik att du försöker kontrollera om ref.current inte är null innan du refererar till ref.current.clientHeight

Så det korrekta villkoret bör vara:

useEffect(() => {
  if (ref !== null && ref.current !== null) {
    setHeight(ref.current.clientHeight);
  }
}, [user]);

Villkoret || körs från vänster till höger, om du vill fortsätta använda ditt villkor, ändra ordningen till:

useEffect(() => {
  if (ref.current !== null || ref !== null) {
    setHeight(ref.current.clientHeight);
  }
}, [user]);

Svar #2

Observera att felen försvinner när du ändrar koden till att vara:

if (ref !== null && ref.current != null) {
    setHeight(ref.current.clientHeight);
}

Jag ändrade || till &&.