reactjs - 当一个视频停止时,其他视频在反应原生视频中同时停止
问题描述
我已经开发了 react-native cli,react-native-video(目前,试图展示视频)。
在一个屏幕中,有一个flatList,它有一个renderItem(column2)。在 renderItem 中呈现图像或视频缩略图。就像购物应用程序 UI AMAZON。
问题是视频。用户向下滑动到手机视图时,它将自动停止。同时,在停止的视频下方,其他视频播放器将停止。该视频正好在用户手机视图的中间!
我该如何解决这个问题?
- 平面列表,
const [videoPlayback, setVideoPlayback] = useState(false);
const viewabilityConfig = {
itemVisiblePercentThreshold: 80,
};
const _onViewableItemsChanged = useCallback((props) => {
const changed = props.changed;
changed.forEach((item) => {
if (item.item.vimeoId) {
if (item.isViewable) {
setVideoPlayback((prev) => true);
} else {
setVideoPlayback((prev) => false);
}
}
});
}, []);
...
<FlatList
ref={ref}
numColumns={2}
data={posts}
keyExtractor={(item: any) => `${item.postId}`}
viewabilityConfig={viewabilityConfig}
onViewableItemsChanged={_onViewableItemsChanged}
renderItem={({ item, index }) => (
<PostContainer item={item} videoPlayback={videoPlayback} navigation={navigation} index={index} />
)}
- 邮政容器
const PostContainer = ({ item, videoPlayback }) => {
const videoPlayer = useRef(null);
useFocusEffect(
React.useCallback(() => {
videoPlayer?.current?.seek(0);
if (videoPlayer && !videoPlayback) {
videoPlayer?.current?.seek(0);
}
}, [fadeAnim, videoPlayback]),
);
return (
<View>
{ // This place that image component rendered}
{item.vimeoId && (
<StyledVideo
ref={videoPlayer}
paused={!videoPlayback}
repeat={true}
resizeMode={"cover"}
volume={0}
source={{
uri: item.vimeoThumbnail,
}}
/>
)}
</View>
);
};
解决方案
您列表中的所有视频共享相同的 videoPlayback 状态。如果您希望单独控制每个视频,请将您的 videoPlayback 状态逻辑移动到您的 PostContainer。
推荐阅读
- python - 在 Django 中将 CSS 添加到 Pdfkit?
- python - 如何在安装前检查 SD 卡大小并且不需要 root
- graphics - 如何在不损失质量的情况下将增强的 Windows 图元文件 (emf) 转换为 JPG 或 PNG?
- javascript - 如何让 jquery 识别动态生成的单选按钮上的点击事件?
- python - 如何让敌人跟随 Pygame 中的玩家?
- django - uWSGI - chdir():没有这样的文件或目录 [core/uwsgi.c line 2629]
- android - Android应用程序如何实时提醒设备?
- json - React.js:setState 方法将变量设置为字符串而不是对象......有解决方法吗?
- c# - 面向对象编程的帮助或建议?
- apache - 什么是在 Apache 中执行透明内容协商