所以我是React Native
的新用户,我正在使用redux
和react-navigation
构建此应用。这是问题所在:
我从API获取记录,事情进展顺利。当我获取记录时,有Loading
图标,然后Listview
显示记录,然后当没有记录时,我显示No record found.
Text
。然后突然记录停止显示,Loading
图标会在有记录时继续显示,但是当没有记录时Text
显示。
可能导致此错误的原因是什么?我正在使用Expo
所以我打印以控制提取的记录并且有记录。在获取数据之后,我在console.log
函数中放了render
并调用它,这意味着它只是不呈现Listview
。
提前致谢!
更新
所以我使用了FlatList
,如下所示,我发现从item
传递的FlatList
未定义,当我打印传递的数据时,这又是一个奇怪的原因列表中有内容。这是我目前的代码:
MyFlatlist
return <FlatList
data={data} //an array of objects
renderItem={this._renderItem} //console prints undefined
/>
//I also tried
return <FlatList
data={data} //an array of objects
renderItem={({item}) => this._renderItem(item)} //I think this doesn't call the method cause it doesn't print anything on the console.
/>
MyRenderItem
_renderItem = ({item}) => {
console.log(item)
}
最终更新
因此有两个因素导致了这个问题,首先是我将数据更改的API导致我在我的视图中访问的字段不再存在,React Native
将此视为错误和结果渲染停止而没有错误消息,这就是难以检测的原因。其次,当我使用FlatList
时,发送到renderItem函数的每个项目也位于一个对象中,该对象具有包含实际数据的属性item
,因此渲染会再次停止。
就我的设置而言,现在已修复。谢谢你的帮助!
答案 0 :(得分:1)
我之前发现ListView没有重新渲染。
来自docs:
提供给数据源的rowHasChanged函数告诉ListView是否需要重新呈现行,因为源数据已更改 - 有关更多详细信息,请参阅ListViewDataSource。
但ListView已被弃用。见https://facebook.github.io/react-native/docs/listview.html。尝试使用FlatList或SectionList。有关详情,请参阅此article。