问题描述
function TestComp() {
return (
<FlatList
keyExtractor={(item) => String(item)}
data={[0,1,2,3]}
renderItem={({ item }) => (
<View>
<Text>{item}</Text>
</View>
)}
maintainVisibleContentPosition <--- Causes crash
/>
);
}
程序立即崩溃,并抛出错误:
Exception thrown while executing UI block: - [__NSCFBoolean objectForKeyedSubscript:]: unrecognized selector sent to instance 0x11bfcae48
。
当我删除maintainVisibleContentPosition道具时,崩溃消失了(但我需要它)。
我在react 16.11.0
上,正在使用expo sdk 38.0.0
。
知道为什么会这样吗?
解决方法
发生这种情况是因为React期望您定义最小可见位置,即使该位置为零也是如此。因此,尝试使用
,而不是仅放置maintainVisibleContentPositionmaintainVisibleContentPosition={{
minIndexForVisible: 0,}}
,
maintainVisibleContentPosition是官方文档
由于maintainVisibleContentPosition
正在确定对象的纵横比,导致应用程序崩溃
尝试
maintainVisibleContentPosition={{
minIndexForVisible: 0,}}
这是演示:https://snack.expo.io/@nomi9995/flastlist-fix-crash
import * as React from 'react';
import { FlatList,Text,View } from 'react-native';
export default function App() {
return (
<FlatList
keyExtractor={(item) => String(item)}
data={[0,1,2,3]}
renderItem={({ item }) => (
<View>
<Text>{item}</Text>
</View>
)}
maintainVisibleContentPosition={{
minIndexForVisible: 0,}}
/>
);
}