React styled-component 无法识别视频标签的 HTML 属性“自动播放”

Posted

技术标签:

【中文标题】React styled-component 无法识别视频标签的 HTML 属性“自动播放”【英文标题】:React styled-component not recognising HTML attribute 'autoplay' of video tag 【发布时间】:2018-09-27 00:14:18 【问题描述】:

我有一个样式化的组件来设置视频标签的样式。

const Video = styled.video`
  ...
`

我就是这样使用它的

<Video width='200px' height='200px' autoplay='autoplay' muted loop>
  <source src=img.src type='video/mp4' />
</Video>

但是autoplay 属性不起作用,并且在我使用 Devtools 检查元素时也不会显示。其他属性,如宽度、高度和循环是可见的。

但是,当我使用普通视频标签时,自动播放功能正常,并且在我检查元素时可以看到。

<video width='200px' height='200px' autoplay='autoplay' muted loop>
  <source src=img.src type='video/mp4' />
</video>

知道为什么 styled-component 不能识别 autoplay 属性吗?

【问题讨论】:

自 2018 年 4 月起,Chrome 已更改其自动播放政策:developers.google.com/web/updates/2017/09/… 这不是样式组件问题。这与 React 语义属性更改有关,例如 htmlFor 而不是 for 属性。将其更改为 autoPlay 应该可以修复它 【参考方案1】:

尝试autoPlay 而不是autoplay

<Video ... autoPlay />

参考:

'autoplay' attribute

【讨论】:

【参考方案2】:

如果你使用的是 NPM,那么添加 react 播放器依赖项

npm install react-player --save

如果你使用 yarn 添加 react 播放器依赖项

yarn add react-player

在索引文件中导入 ReactPlayer 组件

import ReactPlayer from 'react-player';

现在可以设置了

<YourComponent url='https://www.youtube.com/linkhere' playing />

默认为 False。 你可以在 props 或者 condition 里面设置为 True

【讨论】:

【参考方案3】:

我遇到了类似的问题,感谢上面的答案,我可以解决它。

视频元素似乎可以使用 autoPlay="autoPlay" 或 autoPlay,但是我必须手动重新加载页面才能使其正常工作。

<Video
    autoplay="autoplay" // not working
    autoPlay="autoPlay" // working
    autoPlay // working
    autoplay // not working
    muted
    loop
  >
    <source src=DroneShot type="video/mp4" />
  </Video>

【讨论】:

以上是关于React styled-component 无法识别视频标签的 HTML 属性“自动播放”的主要内容,如果未能解决你的问题,请参考以下文章

react-native-testing-library 和 styled-components 无法访问道具

无法使用 styled-components 将样式应用于 React Native 中的自定义组件?

React styled-component 无法识别视频标签的 HTML 属性“自动播放”

react之styled-components

使用 Styled-components 修改 SVG (react / next)

nextjs + react-native-web + styled-components :warnOnce