Taro 3.6.0 Virtual List抖动问题重现了。

dl5txlt9  于 2023-02-04  发布在  其他
关注(0)|答案(5)|浏览(294)

相关平台

微信小程序

小程序基础库: 2.29.2
使用框架: React

复现步骤

import Taro from '@tarojs/taro'
import React, { useRef, useState } from 'react'
import VirtualList from '@tarojs/components/virtual-list'
import { Button, View } from '@tarojs/components'

type Props = {
  id: string
  index: number
  data: any
}

function buildData(offset = 0) {
  return Array(100)
    .fill(0)
    .map((_, i) => i   offset)
}

const { windowHeight } = Taro.getSystemInfoSync()
const itemHeight = 100

const Row = React.memo((props: Props) => {
  const { id, index, data } = props

  return (
    <View
      id={id}
      style={{ height: '100%', backgroundColor: index % 2 ? 'silver' : 'green' }}
    >
      Row { index } : { data[index] }
    </View>
  )
})

export default function Index() {
  const ref: any = useRef(null)
  const [ data ] = useState(buildData())
  const dataLen = data.length

  const onTap1 = () => {
    if (ref.current) {
      ref.current.scrollTo()
    }
  }

  const onTap2 = () => {
    if (ref.current) {
      ref.current.scrollToItem(5)
    }
  }

  const onScroll = (e) => {
    console.log(e.scrollDirection)
  }

  return (
    <View>
      <VirtualList
        ref={ref}
        height={windowHeight} /* 列表的高度 */
        width='100%' /* 列表的宽度 */
        item={Row} /* 列表单项组件,这里只能传入一个组件 */
        itemData={data} /* 渲染列表的数据 */
        itemCount={dataLen} /* 渲染列表的长度 */
        itemSize={itemHeight} /* 列表单项的高度  */
        useIsScrolling
        layout='vertical'
        unlimitedSize
        position='absolute'
        onScroll={onScroll}
      />
      <Button onClick={onTap1} style={{ position: 'fixed', bottom: '120px', right: '20px', width: '100px' }}>顶部</Button>
      <Button onClick={onTap2} style={{ position: 'fixed', bottom: '50px', right: '20px', width: '100px' }}>第5行</Button>
    </View>
  )
}

期望结果

Virtual List不抖动。
还原3.5.12的版本

实际结果

新版本抖动

环境信息

Taro CLI 3.6.0 environment info:
    System:
      OS: macOS 13.2
      Shell: 5.8.1 - /bin/zsh
    Binaries:
      Node: 14.19.3 - ~/.nvm/versions/node/v14.19.3/bin/node
      Yarn: 1.22.19 - ~/.yarn/bin/yarn
      npm: 6.14.17 - ~/.nvm/versions/node/v14.19.3/bin/npm
    npmPackages:
      @tarojs/cli: 3.6.0 => 3.6.0
      @tarojs/components: 3.6.0 => 3.6.0
      @tarojs/helper: 3.6.0 => 3.6.0
      @tarojs/plugin-framework-react: 3.6.0 => 3.6.0
      @tarojs/plugin-platform-alipay: 3.6.0 => 3.6.0
      @tarojs/plugin-platform-jd: 3.6.0 => 3.6.0
      @tarojs/plugin-platform-qq: 3.6.0 => 3.6.0
      @tarojs/plugin-platform-swan: 3.6.0 => 3.6.0
      @tarojs/plugin-platform-tt: 3.6.0 => 3.6.0
      @tarojs/plugin-platform-weapp: 3.6.0 => 3.6.0
      @tarojs/react: 3.6.0 => 3.6.0
      @tarojs/router: 3.6.0 => 3.6.0
      @tarojs/runtime: 3.6.0 => 3.6.0
      @tarojs/shared: 3.6.0 => 3.6.0
      @tarojs/taro: 3.6.0 => 3.6.0
      @tarojs/taro-h5: 3.6.0 => 3.6.0
      @tarojs/webpack5-runner: 3.6.0 => 3.6.0
      babel-preset-taro: 3.6.0 => 3.6.0
      eslint-config-taro: 3.6.0 => 3.6.0
      react: ^18.0.0 => 18.2.0

补充信息

问题是由于这个fix导致的: ae8764e

Screenshot:
https://user-images.githubusercontent.com/124277517/216508737-6b51b60a-4763-457b-9c4b-701bf5b4f908.MP4

pgx2nnw8

pgx2nnw82#

@ZakaryCode 麻烦看一下,我觉得 这个fix
带来了很多其他问题,能否rollback这个change?

mo49yndu

mo49yndu3#

@ZakaryCode ,刚升级到3.6.0,也遇到 virtual-list 抖动的问题,麻烦关注一下

iyzzxitl

iyzzxitl4#

@ZakaryCode 升级到Taro 3.6.0后,微信小程序虚拟列表在滚动时,出现抖动的情况。能否帮忙需要修复一下?

ddhy6vgd

ddhy6vgd5#

能否rollback这个change?

回滚会带来其他问题

麻烦关注一下

能否帮忙需要修复一下?

好的,等我先验证下,尽快修复

相关问题