reactjs - Hvordan legge inn en YouTube-iframe ved hjelp av React + TypeScript?
Typescript ser ut til å jobbe imot meg her. Her er det jeg vil bygge inn:
<iframe
width="560"
height="315"
src="https://www.youtube.com/embed/BLAH?showinfo=0"
frameBorder="0"
allow="autoplay; encrypted-media"
allowFullScreen></iframe>
Problemet er allow-attributtet:
TS2339: Property 'allow' does not exist on type 'DetailedHTMLProps<IframeHTMLAttributes<HTMLIFrameElement>, HTMLIFrameElement>'.
...som er sant, det er ikke i index.d.ts. Hvordan kan jeg tvinge å legge til dette attributtet, eller på en eller annen måte kaste iframe til any type, osv?
Svar #1
Svaret er å endre attributtet fra allow til data-allow.
Svar #2
Hva som fungerte for meg med React 17.0.1 i Gatsby 3.0.1:
lag en index.d.ts-fil i prosjektet ditt. Inkluder denne koden:
import "react";
declare module 'react' {
export interface IframeHTMLAttributes<T> {
controls?: 0 | 1
fs?: 0 | 1
hl?: string
}
}
Bare et eksempel - alle tilgjengelige props kan sees i Youtube Iframe-dokumentasjonen: https://developers.google.com/youtube/player_parameters#origin
pek på indeksfilen i tsconfig.json-filen:
"include": ["src/types/global.d.ts" ]
Det er det!
