You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Modal中使用FlatList?解决嵌套ScrollView报错问题

修复VirtualizedList嵌套ScrollView的报错问题

报错原因是Modal.Body内部默认实现了ScrollView,和你嵌套的FlatList(基于VirtualizedList)属于同方向滚动,这种嵌套会破坏VirtualizedList的窗口化优化,引发报错。

下面是几种可行的修复方案:

方案一:禁用Modal.Body的滚动

给Modal.Body添加scrollEnabled={false}属性,同时设置flex={1}让它撑满剩余空间,把滚动控制权完全交给FlatList:

<Modal size="full">
  <Modal.Content minHeight="100%" flex="1">
      <Modal.Header>
         ...
      </Modal.Header>

      <Modal.Body px={0} py={1} scrollEnabled={false} flex={1}>
          <Flex flex={1}>
              <FlatList
                ...
              />
          </Flex>
      </Modal.Body>

      <Modal.Footer borderTopWidth={0} justifyContent="center">
         ...
      </Modal.Footer>
  </Modal.Content>
</Modal>

方案二:替换Modal.Body为普通容器

如果不需要Modal.Body自带的滚动功能,直接用Flex或View替代它,彻底消除嵌套滚动的根源:

<Modal size="full">
  <Modal.Content minHeight="100%" flex="1">
      <Modal.Header>
         ...
      </Modal.Header>

      {/* 用Flex替代Modal.Body,移除默认ScrollView */}
      <Flex px={0} py={1} flex={1}>
          <FlatList
            ...
          />
      </Flex>

      <Modal.Footer borderTopWidth={0} justifyContent="center">
         ...
      </Modal.Footer>
  </Modal.Content>
</Modal>

方案三:开启FlatList的嵌套滚动(不推荐优先使用)

如果必须保留Modal.Body的滚动,可以给FlatList添加nestedScrollEnabled={true}属性,但这种方式可能影响VirtualizedList的性能优化,仅在不得已时使用:

<FlatList
  nestedScrollEnabled={true}
  // 其他属性...
/>

内容的提问来源于stack exchange,提问作者AlexMoshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 01:45:22