小程序实现feed流(一拖三的组件技巧)

小程序:一拖三视频组件&setData使用技巧

  1. 视频预加载

  2. 视频实例复用

  3. 视频预加载

  4. autoplay自动播放触发加载

  5. bindplay在播放开始后暂停播放
    前体:预加载的视频既要显示,又要不显示。

如果video标签渲染时是隐藏的,则不会触发自动播放
隐藏的几个例子:

  • 'display'为'none';
  • 'width'或'height'为0;
  • 'wx:if="{{false}}"'
  1. 视频预加载
    所以需要在屏幕之外显示视频元素:
<view
  class="videos"
  style="transform:translateY({{videoScrollY}}px)"
>
<video
  wx.for="{{videos}}"
  wx.key="{{item.rowKey}}"
  bindPlay="bindPlay"
  autoPlay
>
</video>
</view>
  1. 视频实例复用
    关键点:
    视频列表索引
    当前播放视频
    预加载视频
    包含3个video的视频列表

  2. 当前播放的视频索引 index = activeIndex % 3

  3. 预加载索引 preIndex = (activeIndex + 1) % 3

let preIndex = Math.min(list.length - 1, Math.max(0, (activeIndex + direction)));

this.setData({
  ['videos[${preIndex % 3}]']: list[preIndex],
  videoScrollY: -windowHeight * (activeIndex % 3),
});
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容