redux React重新渲染重新启动的视频

jv4diomz  于 2022-11-12  发布在  React
关注(0)|答案(2)|浏览(120)

我有一个带有复杂视图逻辑的react应用程序。有一个视图需要不同的父视图和条件渲染。这会导致我的流引用丢失,或者视频重新启动。是否有任何方法可以设置它,以便我的视频示例可以在不重新启动的情况下到达新的视图状态?
我试过不显示,但它扰乱了我的视图,可见性隐藏重新启动视频。
这是我问题的一个沙箱。
https://codesandbox.io/s/romantic-wood-qnn2x0?file=/src/App.js:0-1004

puruo6ea

puruo6ea1#

这是我想到的一个解决办法。

import { useState } from "react";
import React from "react";

import "./styles.css";

let flex = {
  display: "flex"
};
let leftParent = {};

let VidInstance = React.forwardRef((props, ref) => {
  return (
    <div style={{ display: !props.mute ? "flex" : "none", width: 200 }}>
      <video
        controls=""
        preload="none"
        autoPlay
        src="https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4"
        width="200"
        muted={props.mute}
      ></video>
    </div>
  );
});

export default function App() {
  let [view, setView] = useState(false);

  return (
    <div className="App">
      <flex style={flex}>
        <leftParent style={leftParent}>
          <Box />
          <Box />
          <VidInstance key="vid" mute={view} />
        </leftParent>
        <VidInstance key="vid" mute={!view} />
      </flex>
      <button onClick={() => setView(!view)}>view</button>
    </div>
  );
}

let Box = () => {
  let boxStyle = {
    width: "200px",
    margin: "2px",
    height: "100px",
    background: "blue"
  };
  return <div style={boxStyle}></div>;
};

1.同时加载两个VidInstance以同步它们的播放时间。
1.用 Package 函数div Package VidInstance,并给予div与视频具有相同的宽度,以便在隐藏视频时保留空白空间。
1.将mute prop传递给VidInstance以静音并隐藏非活动视频。

wbgh16ku

wbgh16ku2#

您必须在视频标签中使用标签<source> ...它对我很有效:

<video width="320" height="240" controls>
  <source src="movie.mp4" type="video/mp4">
  <source src="movie.ogg" type="video/ogg">
  Your browser does not support the video tag.
</video>

相关问题