Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止音频元素在react中重新渲染_Javascript_Reactjs - Fatal编程技术网

Javascript 如何防止音频元素在react中重新渲染

Javascript 如何防止音频元素在react中重新渲染,javascript,reactjs,Javascript,Reactjs,因此,我已经使用HTMLMediaElements一段时间了,即react中的音频元素,我注意到,只要有重新渲染,音频元素也会重新渲染,因为所有其他元素都会重新渲染,因此播放会返回默认值,这会将元素的currentTime设置回零 我曾假设这种情况会有特殊情况,因为我从未假设重新渲染会导致音频元素从一开始就开始播放,即收听语音备忘,同时在社交媒体应用程序中键入状态是唯一的真相来源,这样的实例会导致react重新呈现音频元素,从而使元素处于默认状态 因此,我的问题是,我是否必须将音频元素从组件中抽

因此,我已经使用HTMLMediaElements一段时间了,即react中的音频元素,我注意到,只要有重新渲染,音频元素也会重新渲染,因为所有其他元素都会重新渲染,因此播放会返回默认值,这会将元素的currentTime设置回零

我曾假设这种情况会有特殊情况,因为我从未假设重新渲染会导致音频元素从一开始就开始播放,即收听语音备忘,同时在社交媒体应用程序中键入状态是唯一的真相来源,这样的实例会导致react重新呈现音频元素,从而使元素处于默认状态

因此,我的问题是,我是否必须将音频元素从组件中抽象出来,放入其自身的功能组件中,并使用React.memo防止其不必要地重新呈现,或者在这种情况下,是否有更好、更简洁的方法来处理这种情况,或者对于这种情况,是否有任何特殊情况我可以利用

Thanks in advance for the response.

通过比较新虚拟DOM和旧虚拟DOM,使用协调来更新DOM。当你说rerender时,是不是组件被重新命名,因此音频元素被销毁,然后再次创建?您可以使用Chrome开发工具DOM断点(右键单击>断开>删除节点)进行检查。一些代码也会有帮助…:)