Javascript 为什么在React中忽略视频标签上的“mute”属性?

Javascript 为什么在React中忽略视频标签上的“mute”属性?,javascript,html,reactjs,Javascript,Html,Reactjs,嗯,听起来有点违反直觉,静音的标签不知何故被忽略了;查看下面的代码片段, 第一个用react呈现,第二个用普通html呈现;用你的开发工具检查它们,你会发现react on没有静音属性;我已经尝试了muted={true},muted=“true”,但是non正在工作 函数VideoPreview(){ 返回( 反应标签: 您的浏览器不支持视频标记。 ); } ReactDOM.render(,root) 常规html: 您的浏览器不支持视频标记。 这实际上是一个自2016年以来就存在的问

嗯,听起来有点违反直觉,
静音的
标签不知何故被忽略了;查看下面的代码片段, 第一个用react呈现,第二个用普通html呈现;用你的开发工具检查它们,你会发现react on没有
静音属性;我已经尝试了
muted={true}
muted=“true”
,但是non正在工作

函数VideoPreview(){
返回(
反应标签:
您的浏览器不支持视频标记。
);
}
ReactDOM.render(,root)


常规html: 您的浏览器不支持视频标记。
这实际上是一个自2016年以来就存在的问题。 视频将正确静音,但不会在DOM中设置属性。
您可以在GitHub问题中找到多个解决方案,尽管其中任何一个都可能有优点和缺点。

正如@FluidSense所提到的,这是一个永远开放的bug

我可以这样做:

import React, { useRef, useEffect } from "react";

export default function Video({ src, isMuted }) {
    const refVideo = useRef(null);

    useEffect(() => {
        if (!refVideo.current) {
            return;
        }

        if (isMuted) {
            //open bug since 2017 that you cannot set muted in video element https://github.com/facebook/react/issues/10389
            refVideo.current.defaultMuted = true;
            refVideo.current.muted = true;
        }

        refVideo.current.srcObject = src;
    }, [src]);

    return (
            <video
                ref={refVideo}
                autoPlay
                playsInline //FIX iOS black screen
            />
    );
}
import React,{useRef,useffect}来自“React”;
导出默认函数视频({src,ismute}){
const refVideo=useRef(空);
useffect(()=>{
如果(!refVideo.current){
返回;
}
如果(isMuted){
//打开2017年以来无法在视频元素中设置静音的错误https://github.com/facebook/react/issues/10389
refVideo.current.defaultMuted=true;
refVideo.current.muted=true;
}
refVideo.current.srcObject=src;
},[src]);
返回(
);
}

我这边的视频似乎静音了…@AneesIjaz不,视频没有声音;这是一个预览链接,你是否尝试过一个有声音的视频。可能不是添加属性react,而是直接将播放器的属性更改为Mute。该属性是通过js设置的,而不是通过html属性设置的。如果添加带有音频的视频,您将看到它已正确静音。@GabrielePetrioli问题是
autoPlay
策略要求视频静音,如果没有该属性,它将如何理解视频是否静音