我需要在应用程序范围内全局访问 VideoElement,以便在 Safari 等浏览器上的用户事件上播放它,并且想知道将 VideoElement 存储在上下文中是否是实现此目的的最佳方法。我通过 redux 操作以编程方式播放我的视频,在 Safari 中这是不可能的,除非它通过用户触发的事件(如点击)播放过一次
是否可以在上下文中存储元素(ref)?然后 VideoElement 将在我想要播放视频的组件中呈现,然后其他组件也可以访问上下文并能够调用诸如usePlayVideo
基于上下文状态的函数,将调用 videoElement.play( ) 如果这是第一次播放视频,或者调度 redux 操作以编程方式播放视频,否则
它的工作原理和行为相同,但想知道直接设置 ref 与通过以元素作为参数的回调设置它是否有任何实际差异。
给定这个反应钩子组件:
const myComponent = ({ ...props}) => {
const myRef = React.useRef(null);
...
return (
<div>
ref={myRef}
</div>
)
}
Run Code Online (Sandbox Code Playgroud)
相对
const myComponent = ({ ...props}) => {
const myRef = React.useRef(null);
...
return (
<div>
ref={element => {
myRef.current = element;
}}
</div>
)
}
Run Code Online (Sandbox Code Playgroud)