Flatlist maintainVisibleContentPosition 导致 iOs 上的即时崩溃

Flatlist maintainVisibleContentPosition causes instant crash on iOs

我有一个只有这个组件的应用程序:

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 期望您定义最小可见位置,即使它为零。因此,不要只放置 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,
            }}
        />
    );
}