【发布时间】:2021-11-19 12:41:33
【问题描述】:
我已经开发了 react-native cli,react-native-video(目前正在尝试 expo-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>
);
};
【问题讨论】:
-
首先显示代码,不知道您希望任何人如何帮助您提供您提供的信息
-
也提供您的代码,以便我们找出问题所在。
-
@Krismu 非常感谢!我已经编辑了我的文章以征求您的意见。
-
@GauravVanani 非常感谢!我已经编辑了我的文章以征求您的意见。
标签: reactjs react-native react-native-video