平面表maintainVisibleContentPosition导致iO立即崩溃

问题描述

我有一个仅包含此组件的应用程序:

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

知道为什么会这样吗?

enter image description here

解决方法

发生这种情况是因为React期望您定义最小可见位置,即使该位置为零也是如此。因此,尝试使用

,而不是仅放置maintainVisibleContentPosition
maintainVisibleContentPosition={{
     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,}}
        />
    );
}