我无法在单位列表中显示视频。它在实际设备上似乎是一个特定的iOS问题,因为它在模拟器和android上都能正常工作。使用react-native-video
,并在错误日志中显示错误代码为AVFoundationErrorDomain
的{{1}}。经过一段时间的搜索,似乎真实设备对它们一次可以显示多少个视频实例有限制。
因此,我在视频组件中出现了黑屏,其中控件呈灰色显示,且播放按钮被划掉。结构是平面列表->子->视频。我尝试过更改顺序并将视频组件上移,但问题仍然相同。列表将一次渲染10个项目,并且可以包含图片或视频。
我尝试保存使用onViewableItemsChanged道具渲染的项的键并将其保存,最多保存10个在redux中。然后我获取此数组,在该数组中渲染视频组件以仅渲染ID为的视频组件该项目与redux数组中的项目相同。理论上,这仅应呈现已查看或最近已查看的项目。
在此之前,现在还没有完全加载视频,现在已经渲染了一会儿,但是在渲染并播放了一对视频之后,问题又回来了。实际的组件总是渲染的(如果键/ id已保存并提取到redux),但其屏幕为黑屏
在我的代码中提供其他解决方案或帮助我解决此问题的任何人,将不胜感激。
减速器:
11839
操作:
let feedIdsArr = [...state.savedFeedIds];
let newFeedId = action.payload;
if (feedIdsArr.length < 10) {
if (!feedIdsArr.includes(newFeedId)) {
feedIdsArr.push(newFeedId)
}
} else {
feedIdsArr.shift()
}
console.log("SAVE_FEED_ID", feedIdsArr);
return {...state, savedFeedIds: feedIdsArr};
渲染:
return dispatch => {
dispatch({
type: SAVE_FEED_ID,
payload: id
});
}
}
onViewableItemsChanged:
if (this.props.savedFeedIds.includes(this.props.feed.feedItemId)) {
return (
<Video
source={{uri: url}}
style={this.calculateVideoAspectRatio(videoGallery, orientation)}
controls={true}
paused={true}
resizeMode={orientation === 'portrait' ? "cover" : null}
fullscreen={false}
ref={r => this.player = r}
onError={err => console.log("VIDEO ERROR", err)}
/>
)
}