- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的列表组件是这样的:
<List>
<FlatList
data={films}
renderItem={({ item }) => (
<FilmListItem
filmSummary={item}
navigateToDetailsScreen={navigateToDetailsScreen}
/>
)}
keyExtractor={() => cuid.slug()}
ListHeaderComponent={<Header totalResults={totalResults} />}
ListFooterComponent={<Footer />}
onEndReached={() => dispatchFetchPage()}
/>
</List>
FilmListItem 渲染函数如下所示:
render() {
const { filmSummary } = this.props
return (
<TouchableOpacity onPress={this.onPress}>
<ListItem title={filmSummary.Title} subtitle={filmSummary.Year} />
</TouchableOpacity>
)
}
FlatList 载入满屏项目,然后继续载入另外三个满屏项目。但是,在 FlatList 完成加载其他页面之前,已经呈现的 TouchableOpacity 项目不会响应触摸。
一旦 FlatList 完成加载,项目就会响应触摸,但之前不会。如果我将列表滚动到底部并且 FlatList 继续加载更多项目,可见项目将再次变得无响应。
我错过了什么吗?
最佳答案
这似乎与性能问题有关。我的建议:
为您的渲染项目功能使用纯组件。它会比较浅,所以它不会那么容易地重新渲染。性能提升。
不要在您的 props 上使用匿名函数。将它移到渲染函数之外。因此,每次您的组件重新呈现时,该函数都不会重新创建。
将 initialNumToRender={number}
属性添加到 Flatlist。它只会显示屏幕上可见的那些组件。
示例代码:
// 1. make sure your FilmListItem is pure component!!
class FilmListItem extends React.PureComponent {
render() {
// ....
}
}
// 2. Move out all anonymouse function
_renderItem = ({ item }) => (
<FilmListItem
filmSummary={item}
navigateToDetailsScreen={navigateToDetailsScreen}
/>
);
_keyExtractor = () => cuid.slug();
// render of your main component
render() {
return (
<List>
<FlatList
initialNumToRender={number} // 3. try add initialNumToRender
data={films}
renderItem={this._renderItem}
keyExtractor={this._keyExtractor}
ListHeaderComponent={<Header totalResults={totalResults} />}
ListFooterComponent={<Footer />}
onEndReached={dispatchFetchPage} // no need anonymouse function
/>
</List>
);
}
您可以在这里查看类似的性能问题:
关于react-native - 当 FlatList 正在加载新项目时,FlatList 项目不会响应触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49594523/
当我们有大数据时如何优化 Flatlist 的性能。 我的列表既有图片又有文字说明。 我想找到一种方法来提高列表的性能并删除从缓存列表中加载的额外图像,并使列表不重。 最佳答案 FlatList 组件
我在 flatlist 之前有一个 flatlist 元素和另一个元素。当我向上滚动时,flatlist 之前的元素不会上升并且是固定的。有没有办法让它在faltlist向上滚动的时候上升? 例子:
我在一个父级 FlatList 中渲染多个 FlatList 子级 {item.name} HOW DO I
我的列表组件是这样的: ( )} keyExtractor={() => cuid.slug()} ListHeaderComponent={}
我无法创建嵌套在具有相同方向的 FlatList 内的 FlatList; 结果是父级是水平的,而子级是垂直的; 这是我的代码: renderSlides(question) { return
我想显示一个平面列表,但我有一个问题。在手机底部,我无法显示帖子的完整性,也不要滚动到它。我不知道为什么。有些问题?我尝试了一些有风格的间距东西,但这不像我想要的那样工作。 import React,
我有一个垂直的 FlatList 组件和两个按钮作为 TouchableOpacity,我如何使用按钮执行 FlatList 的滚动, 即“将 FlatList 滚动到底部”和“将 FlatList
我有一个垂直的 FlatList 组件和两个按钮作为 TouchableOpacity,我如何使用按钮执行 FlatList 的滚动, 即“将 FlatList 滚动到底部”和“将 FlatList
是否可以使用 实现平面列表? react 原生网络 在保持可见内容的同时在哪里添加数据? 现在,当您添加某些内容时,它会跳到 Flatlist 的顶部。我正在使用 onContentSizeChang
我有这个代码 class Home extends Component { constructor(props) { super(props); this.state = {
我在一个屏幕中有一个静态组件和许多 for 循环渲染组件。 所有代码都在下面。 import React from "react"; import { View, Text, FlatList } f
请帮助我在我的应用程序上实现拉动刷新,我对 native react 有点新,谢谢。我不知道如何处理 onRefresh 和刷新。 class HomeScreen extends Component
我有以下情况:渲染函数中屏幕上有一个 FlatList: render() { console.log('In render'); const { data } = this.
我遇到了 FlatList 问题,我正在尝试使用从数据库获取的数据来渲染图像。但什么也没有出现。我可以从控制台看到数据,正如您在此处看到的: 但是当我尝试访问照片时,它给了我两个错误: 类型错误:无法
我想渲染 FlatList有两个数组 name和photo 。希望我的FlatList每个项目都包含名称和照片。 但我不知道如何将它们合并到我的 FlatList 中数据。 console.log 我
我有一个 FlatList,当状态发生变化时它不会重新渲染。如何让 FlatList 重新渲染? _renderItem = ({item}) => { if(item=='null'){
是否可以将 FlatList 的背景颜色设置为透明? 我有应用程序背景图像并想将其用作屏幕背景。 但是FlatList中的ListItem似乎需要设置一些颜色。同样的问题也适用于标题。 re
如何在 FlatList 中替换颜色? I tried the following example ,但我无法让它工作。 下面是我的代码: _renderItem = ({ item, index }
我正在实现 FlatList,但它没有提供所需的渲染输出。 这是我的代码: App.js import React from 'react'; import Main from './componen
在我的应用程序中,我使用 axios 获取数据。正如我们所知,我们不能将 FlatList 中的数据渲染为一个对象,它必须是一个数组。当我从服务器获取数据时,如果它是单个项目,它就是对象,如果它不止一
我是一名优秀的程序员,十分优秀!