问题标签 [react-native-sectionlist]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
347 浏览

react-native - React Native SectionList 多次重新渲染相同的数据

我遇到了一个问题,我无法弄清楚这是我的错还是正确的行为。

我正在使用 React Native 的 SectionList 组件渲染一些数据,其结构如下:

然后,处理这一切的组件如下:

我注意到发生的事情是,我console.log在一次渲染中多次获得相同项目的 s 。我在 keyExtractor 方法中放置了一个 console.log,但是使用任何渲染方法(renderItemrenderSectionHeader)都可以重现相同的情况。
类 (CategoriesAndSubcategories) 组件的渲染方法只触发一次,渲染方法开头的 console.log 证明了这一点。

但是,看看我在控制台中得到的日志:

我不是想嘲笑你或任何东西,这些是我在这个组件的第一个也是唯一一个渲染上得到的确切日志。在 SectionList 渲染停止之前,SectionList 中的每个项目都会重新渲染 10 次以上。在渲染CATEGORIES数组中没有更新数据时,外部容器中没有发生布局更改,SectionList 的 UI 中没有发生滚动。此外,似乎项目是“随机”重新渲染的,正如您在日志中看到的那样,该项目key extractor {"id":40,"name":"LABEL C:3 S:40"}连续出现 38 次(约占日志列表的 70%),而其他时候渲染似乎中断了一半-一路走来,从头开始。

有谁知道为什么这段代码会发生如此多的重新渲染?我做错什么了吗?

ps 我正在使用 Expo SDK36、React 16.9、React Native 0.61.4、React Navigation 5(目前为 5.0.5)。iOS (10+) 和 Android (9) 上的行为相同。

0 投票
1 回答
42 浏览

javascript - 如何根据SectionList中的键在ui上填充数组的值

在我的代码中,我低于数组值,并根据 SectionList 中的键填充这些值。UI 中的所有键值都是正确的,但在我的渲染项中我遇到了一些问题。请参阅下面的第二部分,我已经解释了更多。基本上在渲染函数中我也想传递键值

// 下面是数组值

// 这里我在特定键中填充数据 在我这里,我得到了键值内的那个数组。虽然我必须在“客户”键中设置一些条件,但我必须显示头像。但这里没有键值即将到来。请帮忙

// 下面是渲染函数中的代码

谢谢

0 投票
1 回答
765 浏览

react-native - ReactNative:SectionList SectionHeaders 覆盖 ListFooter

我有一个包含核心组件 SectionList 的 React Native 页面。SectionList 具有粘性节标题 (stickySectionHeadersEnabled) 和列表页脚 (ListFooterComponent)。当用户滚动过去最后一节时,最后一节页眉仍然停留在页面顶部,覆盖页脚。但是,我希望将粘性标题包含在部分列表区域的正文中,而不是在最后一部分结束后保留​​在屏幕上。

是否可以使用 SectionList 来实现这一点,还是应该采取另一种方法?

展示这种行为的 Expo 小吃(仅限 iOS 和 Android)

https://snack.expo.io/@unstableair/rn-sectionlist-footer-overlay-example

0 投票
0 回答
190 浏览

react-native - React Native SectionList 不能可靠地呈现其部分之一

我有一个自定义SectionList组件,称为EventSectionList

AnEventSectionList正在此处呈现EventsScreen

不幸的是,有时 - Registered Events 部分不会呈现,直到下拉刷新发生,即使这样 - 它并不总是呈现。我可以看到这部分有点试图渲染 - EventCards 在应该渲染的地方闪烁,但它们不会“粘住”。

作为参考,这里是EventCard组件:

0 投票
3 回答
2557 浏览

react-native - React Native - 未定义不是对象(评估'Items.Length')

我无法解决与 SectionList - React-native 组件相关的问题。

这是我的数据结构:

我正在尝试实现 SectionList,data上面的 const 值在哪里传递。

但我得到一个错误:未定义不是对象(评估'Items.Length')

请帮助并分享可能的解决方案谢谢

0 投票
1 回答
530 浏览

react-native - TypeError: undefined is not an object (evalating '_this2.state.dataSource.cloneWithRows') 当用 FlatList 替换 ListView

我正在将一个项目从 50~ 更新为 react-native 62+,并且 ListView 已从 react-native 中删除,因此我试图将此文件中的 ListView 更改为 FlatList。我不知道如何处理数据源来正确管理数据。有人可以帮我升级这个文件吗?

这是使用 ListView 的原始代码,我没有任何升级尝试,它给出“不变错误:ListView 已从 React-Native 中删除”:(我尝试的代码如下)

这是我尝试升级它的代码,但我在第 78 行“dataSource: this.state.dataSource.cloneWithRows”上收到此错误“TypeError: undefined is not an object (evalating '_this2.state.dataSource.cloneWithRows')” (评论),”

如果您需要更多代码,例如 CommentCell 或 FeedCell,请告诉我,我将编辑帖子以添加代码。有人可以帮我解决这个问题,我已经花了几个小时。

0 投票
1 回答
531 浏览

react-native - 多列上的 SectionList React Native

我有这些数据,我想在多个列上呈现,而不是一个在另一个之上

我希望 ID 保持在顶部,而“配额”保持在相应 ID 之下

部分列表代码是这样的:

在同一列照片上

0 投票
2 回答
4210 浏览

react-native - react-native 中带有可折叠部分标题的部分列表

我正在使用 react-native 版本 0.61.5。我想在 react-native 中创建一个带有可折叠标题的部分列表,如下图所示。

这是我的 API 数据格式

在此处输入图像描述

当我点击标题内容应该展开和折叠。我怎样才能在 react-native 中做到这一点?

0 投票
1 回答
533 浏览

javascript - 如何使用 javascript 将 API 数据转换为 react-native 中的部分列表数据

我想将 API 数据转换为 react-native 中的部分列表格式。这样我就可以在部分列表中显示我的数据。以下是我的 API 数据

我想转换为如下的部分列表格式。

如何使用 array.map 或任何其他运算符将 API 数据转换为 react-native 中的部分列表

0 投票
0 回答
1001 浏览

javascript - 如何为具有动态高度的 SectionList 配置 getItemLayout 道具?

我正在使用 RN 0.62.2,但是当我尝试使用具有不同高度的 4000 多行的 SectionList 并尝试使用该scrollToIndex方法时,我得到了错误:

Invariant Violation:scrollToIndex 应该和 getItemLayout 或 onScrollToIndexFailed 一起使用,否则无法知道屏幕外索引的位置或处理失败。

我做了一些研究并意识到我应该使用getItemLayout道具来告诉列表它的大小并且能够准确地识别我要跳转到的位置,但是我浏览了几个论坛并且找不到正确的方法使用它,我已经使用 NPM 库进行了处理:react-native-section-list-get-item-layout 并sectionlist-get-itemlayout按照此链接的指南进行操作, 但我仍然找不到让我sectionlist工作的方法,请帮忙。非常感谢您提前。

我的代码是: