如何将 ScrollView 与嵌套的 FlatList 一起使用?

2024-01-08

在主屏幕中,我有 3 个 FlatList 和一些其他视图的“其他数据”, 那么我应该将它包装在 ScrollView 中,这样我就可以滚动查看其他数据等等,

但是当我用scrollView包装FlatList时我收到了这个警告

VirtualizedLists 永远不应该嵌套在普通的 ScrollViews 中 相同的方向 - 使用另一个 VirtualizedList 支持的容器 反而。

那么如何在不为 FlatList 创建页眉/页脚组件的情况下解决这个问题呢?

Demo https://snack.expo.io/UBFLbsvzM“注意:我在展会上没有收到警告,也没有使用它,这只是一个观看现场演示的示例”

这里是代码片段

const HomeScreen = () => {
  const renderServices = ({item, index}) => {
    return (
      <View style={styles.itemContainer}>
        <View style={styles.serviceImgContainer}>
          <Image
            style={styles.serviceImg}
            source={{
              uri:
                'https://cdn1.iconfinder.com/data/icons/appliance-1/100/dryer-03-512.png',
            }}
          />
        </View>
        <Text>{item.name}</Text>
      </View>
    );
  };
  return (
    <View style={styles.container}>
      <ScrollView style={{flex: 1}}>
        <View style={styles.headerContainer}>
          <Text style={styles.headerText}>
             Booking Now!
          </Text>
          <View style={styles.imgHeaderContainer} />
        </View>
        {/* Services */}
        <View style={styles.servicesContainer}>
          <View style={styles.servicesHeader}>
            <Text style={styles.headerTitle}>Services</Text>
            <TouchableOpacity>
              <Text style={styles.headerTitle}>more</Text>
            </TouchableOpacity>
          </View>
          <FlatList
            scrollEnabled={false}
            data={[
              {id: 0, name: 'service 0', img: 'img.jpg'},
              {id: 1, name: 'service 1', img: 'img.jpg'},
              {id: 2, name: 'service 2', img: 'img.jpg'},
              {id: 3, name: 'service 3', img: 'img.jpg'},
              {id: 4, name: 'service 4', img: 'img.jpg'},
              {id: 5, name: 'service 5', img: 'img.jpg'},
              {id: 6, name: 'service 6', img: 'img.jpg'},
              {id: 7, name: 'service 7', img: 'img.jpg'},
            ]}
            renderItem={renderServices}
            keyExtractor={(item) => item.id.toString()}
            numColumns={4}
            ItemSeparatorComponent={() => <View style={styles.separator} />}
            columnWrapperStyle={styles.columnWrapperStyle}
          />
        </View>

        {/* FlatList Services 2 */}
        <View style={styles.servicesContainer}>
          <View style={styles.servicesHeader}>
            <Text style={styles.headerTitle}>Services</Text>
            <TouchableOpacity>
              <Text style={styles.headerTitle}>more</Text>
            </TouchableOpacity>
          </View>
          <FlatList
            scrollEnabled={false}
            data={[
              {id: 0, name: 'service 0', img: 'img.jpg'},
              {id: 1, name: 'service 1', img: 'img.jpg'},
              {id: 2, name: 'service 2', img: 'img.jpg'},
              {id: 3, name: 'service 3', img: 'img.jpg'},
              {id: 4, name: 'service 4', img: 'img.jpg'},
              {id: 5, name: 'service 5', img: 'img.jpg'},
              {id: 6, name: 'service 6', img: 'img.jpg'},
              {id: 7, name: 'service 7', img: 'img.jpg'},
            ]}
            renderItem={renderServices}
            keyExtractor={(item) => item.id.toString()}
            numColumns={4}
            ItemSeparatorComponent={() => <View style={styles.separator} />}
            columnWrapperStyle={styles.columnWrapperStyle}
          />
        </View>

        {/* FlatList Services 3 .... */} 
            ....
        
        {/* other data */} 
            ....
      </ScrollView>
    </View>
  );
};

尝试在scrollview中使用scrollView而不是flatList? 当您在scrollView中使用scrollView时,它似乎会自动启用嵌套滚动,并且您可以添加nestedScrollEnabled too.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 ScrollView 与嵌套的 FlatList 一起使用? 的相关文章

  • 如何精确缩放已翻译的d3地图

    我有一张已翻译的地图 以使其正确适合画布 我正在尝试实现一种缩放它的方法 它确实有效 但是当您放大时它会远离中心 而不是以鼠标甚至画布为中心 这是我的代码 function map data total views var xy d3 ge
  • 如何在单页应用程序中使用 #-URL?

    本文 http danwebb net 2011 5 28 it is about the hashbangs提出了一个非常令人信服的论点 因为 URL 是长期存在的 它们被添加书签并传递 所以它们应该是有意义的 并且使用哈希进行真正的路由
  • mocha.opts 已弃用,如何迁移到 package.json?

    我正在开发一个大型项目 自从上周我更新了摩卡以来 现在我们收到警告 DeprecationWarning 通过 mocha opts 进行的配置已被弃用并且 将从 Mocha 的未来版本中删除 使用 RC 文件或 改为 package js
  • 错误 TS2314:通用类型“Component”需要 2 个类型参数

    在将 ReactJS 与 TypeScript 一起使用时 会出现以下错误 error TS2314 Generic type Component
  • 如何在重新加载或向后/向前重定向时保存 React 页面的状态?

    下面是我的代码 我正在使用 API 并获取当前页面上的一些数据 现在 我想在重新加载页面或再次返回或前进时保存此页面的状态 在这里 我从上一页 api 获取 featureGroupID 并将其存储在全局变量 customerID 中 我知
  • Javascript 制作音频 blob

    我正在测试 html 音频标签 我想制作音频 blob url 就像 youtube 或 vimeo 那样 并将其添加到 src 开始播放音频 我一直在测试new Blob and URL createObjectURL 但我不知道如何使用
  • Express JS:请求的资源上不存在“Access-Control-Allow-Origin”标头

    我有一个在服务器上运行的 API 和一个连接到它以检索数据的前端客户端 我对跨域问题做了一些研究并使其发挥作用 但我不确定发生了什么变化 我现在在控制台中收到此错误 XMLHttpRequest 无法加载https api mydomain
  • Moment.js 动态更新时间(以秒为单位)

    我试图显示时钟 that 每秒更新一次 e g 2015 年 1 月 5 日 12 05 01 它似乎对我来说工作得很好 对于相同的代码 并且只有 moment min js 指向v2 11 0 看看代码 来源 MilkyWayJoe va
  • UpdatePanel 启动脚本未执行

    我正在编写一个在 SharePoint 网站中使用的 ASP NET Web 部件 并尝试使用 UpdatePanel 来呈现查询结果 我想使用 JQuery 插件来修改从异步回发返回的表 但我无法让启动脚本在异步更新上执行 我发现这个帖子
  • 接下来如何在React应用程序中使用material-ui的rtl布局

    我想在我的 React 应用程序中使用 RTL 布局 我已经使用material ui下一版本来集成这个应用程序 我使用下面的代码来制作应用程序布局 RTL 某些组件在 RTL 布局中正常工作 但某些组件不受影响 App js Layout
  • 反应独特的“关键”错误

    我正在浏览 React 中的待办事项列表教程 并遇到以下错误 我花了相当长的时间 只是找不到错误 这是错误和组件的代码 这就是代码对于课程存储库 此提交中出现问题 https github com andrewjmead react cou
  • Jquery 子元素发生变化

    我正在尝试使用 jquery 在子元素 在本例中为 select 更改时触发事件 这是我的 HTML div class row addForm div class col lg 2 col md 2 col sm 3 col xs 6 d
  • FullCalendar:如何重新创建/重新初始化 FullCalendar 或批量添加多个事件

    我正在尝试将新事件批量添加到日历中 但未能找到方便的使用方法 所以我决定用新的事件数组重新初始化视图 所以我尝试了以下方法 var events title Event start new Date y m d 10 description
  • 如何使用 Node.js 解析 JSON? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我应该如何使用 Node js 解析 JSON 是否有一些模块可以安全地验证和解析 JSON 你可以简单地使用JSON parse h
  • 如何使用 API 中的数据填充选择的下拉元素 - ReactJS

    我对 React 还很陌生 我正在从 API 获取数据 当我检查控制台日志时可以看到数据 但是我不知道如何使用 map 创建一个新数组 然后选项元素可以使用该数组来显示货币代码 目前它填充下拉列表 但选项元素全部为空 结果显示为 NaN 下
  • React Router Tabs——保持组件安装

    我使用 React Router 创建了选项卡 每个选项卡都有不同的路线 但是 我想通过保持隐藏选项卡的安装来维护选项卡转换之间的选项卡状态 我该如何实现这一目标 每次路由切换时 React 路由器都会重新安装每个组件 已经有人问过这个问题
  • javascript 闭包和对象引用

    我的情况有点晦涩难懂 主要是因为我认为我已经掌握了闭包 所以基本上我想要的是将集合重置为默认值 假设我有一个集合 它具有带有对象参数数组的构造函数 var c new collection x y z 然后集合定期更新 因为我没有保留数组的
  • 引导网格中的绘图图周围有巨大的空白

    我有一个 Net 应用程序 我试图在其中使用创建一个图表bootstrap js and plotly js 当我创建响应式图表时 我遇到网格中存在巨大空白的问题 我发现问题的一部分是plotly svg container的大小默认高度为
  • 如何使用 Chart.js 版本 3.2.1 在圆环图中添加文本

    我正在使用 Canvas 在 HTML 中使用 如何使用在圆环图中添加文本 这是我的 javascript 代码和 HTML 代码 我使用了图表js版本3 2 1 所以请给出相同版本 3 的解决方案 var overallStatsCanv
  • 用于替换前 5 个数字的正则表达式,无论它们之间有什么?

    我正在努力实现以下匹配 Input 123 45 6789 123456789 1234 正则表达式尝试输出 d 5 123 45 6789 123456789 1234 d 2 3 123 45 6789 123456789 1234 d

随机推荐

  • Windows 版 Git:致命:早期 EOF

    昨天我安装了一个新的 Git windows 服务器 2 6 4 它与 Mac git 客户端 git 协议 运行良好 今天我正在努力让第二个客户端 Windows 7 正常工作 在尝试使其工作的过程中 我已将 Windows 服务器和客户
  • 本地主机上的 Azure Functions 代理 404

    我有一个 Azure Function App 其 URL 处有一个函数http localhost 7072 api create room以及其他功能 这个特殊的函数是一个HTTPTrigger允许匿名访问并接受GET verb Htt
  • 从 LINQpad 迁移到正确的 Visual Studio 项目?

    我正在 LINQpad 中学习 LINQ to SQL 这很棒 但是背后发生了很多我不太理解的魔法 我正在使用可选的 IQ 驱动程序连接到 Oracle 数据库 该驱动程序可以在 LINQpad 内部下载 我的查询正在运行 现在我需要将其移
  • 发布实现接口的 F# 类时的反射/C# 键入错误

    我有一个用 C 编写的接口 但在用 F 实现它时 我注意到一些奇怪的地方 F 类必须先转换为接口 然后 C 才能使用它 转换后 WPF 无法读取其属性 绑定失败且 SNOOP 无法反映它 我可以用 C 代码包装该对象 一切正常 界面 pub
  • Deflate压缩块的结构

    我在理解 Deflate 算法时遇到困难 RFC 1951 https www rfc editor org rfc rfc1951 TL DR如何解析Deflate压缩块4be4 0200 我创建了一个包含字母和换行符的文件a n在里面
  • 我应该在 Objective C 中哪里初始化变量?

    在 Objective C 中 我应该覆盖 init 方法来初始化我的变量吗 如果变量是属性 我仍然可以通过通常的方式访问它们来设置其初始值吗 在 Objective C 中 我应该覆盖 init 方法来初始化我的变量吗 是的 具体来说 指
  • Rails 3“最后”方法从 ActiveRecord 输出返回错误结果

    我的控制器中有以下代码 items Item where user id gt 1 order updated at DESC limit 2 oldest item items last 出于某种原因 我猜测这与我最近升级到 Rails
  • 缓存控制的默认值是多少?

    我的问题是 有时浏览器会过度缓存某些资源 即使我已经修改了它们 但F5之后一切都很好 我整个下午都在研究这个案例 现在我完全理解了 Last Modified 或 Cache Control 的意义 我知道如何解决我的问题issue 只是
  • 如何使用 sed 删除从第一行开始到遇到模式 '[ERROR] -17-12-2015' 之前的行?

    我需要在遇到模式 ERROR 17 12 2015 之前删除从第一行到该行的行 目前我正在尝试以下命令 但不幸的是它没有找到模式本身 sed 1 ERROR 17 12 2015 d errLog 这里有什么问题吗 其次 上面的脚本还将删除
  • 如何在python中添加换行符?

    我刚刚用 python 编写了一个程序 但输出中的语句彼此太接近 那么如何在 python 中的两个语句之间添加换行符呢 您可以打印新行字符 print n numlines
  • Kafka 的 session.timeout.ms 和 max.poll.interval.ms 之间的区别

    AFAIK max poll interval ms 是在 Kafka 0 10 1 中引入的 然而 目前还不清楚什么时候我们可以同时使用 session timeout ms 和 max poll interval ms 考虑这样的用例
  • 从日期集合中查找平均日期 (Ruby)

    我有一个猜测表 每个猜测中都只有一个日期 我想知道如何将两个或多个日期转化为平均值 div 类似这样 但显然 Ruby 不允许我划分这两个日期 日期有点难用 你应该使用时间 尝试将日期转换为时间 require time foo time
  • 应用程序运行时 Xcode 4.5 选项卡消失

    更新 看起来每当 Xcode 4 5 开始运行应用程序时 查看 gt 隐藏选项卡栏 命令都会自动执行 这确实看起来像一个错误 这个单词tabs在这个问题中指的是我们在顶部看到的那个Xcode集成开发环境 不是 Cocoa Touch 中的标
  • 多个读取器和多个写入器(我的意思是多个)同步

    我正在开发一项功能 需要一种读 写锁的变体 该变体可以允许并发多个写入者 标准读 写锁允许多个读取器或单个写入器同时运行 我需要一个可以同时允许多个读者或多个作者的变体 因此 它永远不应该允许读者和作者同时存在 但是 可以同时允许多个作者或
  • 云计算和网格计算有什么区别? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 之间有哪些显着差异云计算 and 网格计算 两者的精确定义和目标应用领域是什么 我正在寻找概念见解和技术细节 Like 微软Azure是一个云操作系统
  • 如何获取 JavaFX 应用程序中的主 Stage?

    是否可以在正在运行的 JavaFX 应用程序中获取对主 Stage 的引用 这个问题的背景是我想编写一个库来操作另一种语言 Prolog 的JavaFX接口 为了做到这一点 我的图书馆需要访问主舞台 目标是 JavaFX 应用程序的程序员不
  • 如何在 Android 中从一组图像创建视频?

    我想调用一个函数并从图像列表中构建视频 然后将其保存在设备本地 public void CreateAndSaveVideoFile List
  • 如何比较两个 UNIX 命令的输出以找出差异?

    我不想创建新文件 我想完成类似的事情 cmd1 gt a cmd2 gt b cat a b b sort uniq u 但不使用文件 a 和 b Unix 实用程序通常是面向文件的 因此没有什么能完全满足您的需求 但是 zsh 可以使用以
  • ggplot2按常数因子进行轴变换

    在 ggplot2 密度图 geom 密度 中 我有以下 y 轴标签 0 000 0 005 0 010 0 015 0 020 将它们更改为类似的正确方法是什么 0 5 10 15 20 可能会自动在标签上添加 10 3 x 密度 过去
  • 如何将 ScrollView 与嵌套的 FlatList 一起使用?

    在主屏幕中 我有 3 个 FlatList 和一些其他视图的 其他数据 那么我应该将它包装在 ScrollView 中 这样我就可以滚动查看其他数据等等 但是当我用scrollView包装FlatList时我收到了这个警告 Virtuali