uni-app nvue list 组件中使用uni-transition滚动页面会被回收无法显示

uni-app nvue list 组件中使用uni-transition滚动页面会被回收无法显示

4 回复

解决了吗

更多关于uni-app nvue list 组件中使用uni-transition滚动页面会被回收无法显示的实战教程也可以访问 https://www.itying.com/category-93-b0.html


没法解决 用css不用uni-transition

我也碰到了,nvue下在安卓端没问题,iOS端滚动后在滚回来就不显示了。什么问题导致的。

uni-appnvue 页面中,使用 uni-transition 组件时,如果页面滚动导致组件被回收,可能是因为 nvue 的渲染机制与 vue 页面不同。nvue 是基于原生渲染的,为了提高性能,系统会对不可见的组件进行回收。

要解决这个问题,可以尝试以下几种方法:

1. 使用 recycle-list 组件

recycle-listnvue 中专门用于处理长列表的组件,它可以有效地管理列表项的渲染和回收。你可以将 uni-transition 组件放在 recycle-list 的列表项中,这样可以避免组件被回收。

<recycle-list :list="dataList" :template="template">
  <template v-slot:default="{ item }">
    <uni-transition :show="item.show">
      <view>{{ item.text }}</view>
    </uni-transition>
  </template>
</recycle-list>

2. 使用 keep-alive 组件

keep-alivevue 中的一个内置组件,它可以缓存组件的状态,避免组件被销毁。虽然 nvue 不完全支持 vue 的所有特性,但你可以尝试在 nvue 中使用 keep-alive 来缓存 uni-transition 组件。

<keep-alive>
  <uni-transition :show="show">
    <view>Content</view>
  </uni-transition>
</keep-alive>

3. 手动控制组件的显示和隐藏

如果上述方法不适用,你可以手动控制 uni-transition 组件的显示和隐藏。在页面滚动时,动态设置 uni-transitionshow 属性,确保组件在需要时显示,在不需要时隐藏。

<uni-transition :show="isVisible">
  <view>Content</view>
</uni-transition>
export default {
  data() {
    return {
      isVisible: false
    };
  },
  methods: {
    onScroll(e) {
      // 根据滚动位置动态设置 isVisible
      this.isVisible = e.detail.scrollTop > 100;
    }
  }
};

4. 使用 scroll-view 组件

如果页面内容较少,可以考虑使用 scroll-view 组件来代替页面的滚动。scroll-view 是一个可滚动的容器,它可以避免页面滚动时组件被回收。

<scroll-view scroll-y [@scroll](/user/scroll)="onScroll">
  <uni-transition :show="isVisible">
    <view>Content</view>
  </uni-transition>
</scroll-view>
回到顶部