我使用的是原生组件列表.

似乎FlatList一次呈现所有项目,即使单元格在屏幕上实际上不可见.

<FlatList data={this.props.items} 
          keyExtractor={(item, index) => generateKey()}
         renderItem={this.renderStrip}/>

 renderItem = ({item}) => { 
   console.warn('rendered!');
   return <View style={{height:200, height: 100}} />
}

设置30个项目,似乎根据项目总数调用了"呈现"警告.

我认为FlatList与Android中的RecycleView类似,只在项目即将在屏幕上可见时才渲染它.

我错过什么了吗?这不会降低性能吗?

推荐答案

我的一个应用程序也有同样的问题.我花了几个小时来解决这个问题.

⇓⇓⇓

TDLR;

⇑⇑⇑

Detailed Description:

ISSUE

和线程开启器一样,一开始,我的平面列表只渲染我在initialNumToRender中定义的渲染量,但紧接着,应用程序开始渲染列表的其余部分.

Enviroment

我使用native-base.io作为UI库,并用组件封装屏幕内容

Solution

我发现,本地基本组件<Content>取代了滚动列表.滚动列表中的一个平面列表会 bootstrap 你产生奇怪的结果.

React-native相关问答推荐

Appcenter构建失败错误号::EEXIST -文件存在于syserr_fail2_in

防止 React Native 在上下文值更改时重新安装组件

react-native 根据状态隐藏显示按钮

我应该什么时候调用 realm.close()?

你使用 react native 应该学习 react.js 吗?

如何在 React Native 的嵌套 Touchable 中传播touch 事件?

什么时候适合在 React 中使用构造函数?

运行react应用程序时出错

使用带有 react-native 的 WebView 设置用户代理

redux-observable Promise 在单元测试中没有得到解决

如何在react native应用程序名称中添加空格?

以编程方式在 React Native 中添加组件

在 React Native 中仅显示第一行文本

错误:无法解析模块`buffer`

React Native with Typescript and Jest 在 0.57 更新后被 destruct :Couldn't find preset "module:metro-react-native-babel-preset" relative to directory

xcode 8.3 框架未找到架构 armv7 的 FileProvider

将 react-native 元素Bundle 为 iOS 框架或 (.aar) Android 库

INSTALL_FAILED_UPDATE_INCOMPATIBLE:包签名与之前安装的版本不匹配,忽略

使用 React Native 运行多个 iOS 模拟器?

如何在 react-native 中重叠