reactjs - Hur man skapar en ref med Typescript och styled-components
Jag försöker lägga till en ref till en React-komponent på följande sätt:
const Dashboard: React.FC = () => {
const [headerHeight, setHeaderHeight] = useState(0);
const headerRef = React.createRef<HTMLInputElement>();
useEffect(() => {
// @ts-ignore: Object is possibly 'null'
setHeaderHeight(ref.current.clientHeight)
});
return (
<Root>
<Header ref={headerRef} />
<div>other contents</div>
</Root>
);
};
<Header /> är en enkel React.FC. TS ger ett felmeddelande som säger:
Typen '{ ref: RefObject; }' kan inte tilldelas typen 'IntrinsicAttributes & { children?: ReactNode; }'. Egenskapen 'ref' finns inte på typen 'IntrinsicAttributes & { children?: ReactNode; }'
Hur kan jag övervinna detta problem?
Svar #1
Det ser ut som att du försöker ge en ref som är typad för ett input-element till en annan React-komponent. Om du försöker vidarebefordra refen till ett element inuti Header-komponenten kan du använda Reacts forwardRef-funktion.