如何使用 React + Typescript 嵌入 YouTube iframe?

Posted

技术标签:

【中文标题】如何使用 React + Typescript 嵌入 YouTube iframe?【英文标题】:How to embed a YouTube iframe using React + Typescript? 【发布时间】:2018-07-13 12:57:48 【问题描述】:

Typescript 似乎在这里对我不利。这是我要嵌入的内容:

<iframe 
     
     
    src="https://www.youtube.com/embed/BLAH?showinfo=0" 
    frameBorder="0" 
    allow="autoplay; encrypted-media" 
    allowFullScreen></iframe>

问题是allow属性:

TS2339: Property 'allow' does not exist on type 'DetailedhtmlProps<IframeHTMLAttributes<HTMLIFrameElement>, HTMLIFrameElement>'.

...这是真的,它不在 index.d.ts 中。如何强制添加此属性,或以某种方式将iframe 转换为任何类型等?

【问题讨论】:

如果移动到 react 16 不是一个选项 - 仍然有一个技巧可以让它工作 - 查看这个问题 ***.com/questions/31273093/… 【参考方案1】:

答案是将属性从allow改为data-allow

【讨论】:

【参考方案2】:

在 gatsby 3.0.1 中使用 React 17.0.1 对我有用:

在您的项目中创建一个 index.d.ts 文件。包含此代码:

import "react";
    
declare module 'react' 
   export interface IframeHTMLAttributes<T> 
          controls?: 0 | 1
          fs?: 0 | 1
          hl?: string
        
    

只是一个例子 - 所有可用的道具都可以在 Youtube Iframe 文档中看到: https://developers.google.com/youtube/player_parameters#origin

指向 tsconfig.json 文件中的索引文件:

"include": ["src/types/global.d.ts" ]

就是这样!

【讨论】:

以上是关于如何使用 React + Typescript 嵌入 YouTube iframe?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Typescript 为 React 设置 Material-UI?

如何在 React.js Typescript 版本中使用不支持 typescript 的 javascript 包

如何使用 GraphQL 构建 TypeScript+React 应用

如何使用 React + Typescript 嵌入 YouTube iframe?

如何在 React+Typescript 中使用微数据?

如何在 TypeScript 中使用带有 React 无状态功能组件的子组件?