首页 > 解决方案 > 重新排列 Flatlist 项目而不重新加载 React Native

问题描述

我正在寻找重新排列平面列表项目而不刷新 React Native 中的平面列表/重新加载,就像聊天应用程序一样,当您收到来自列表中某人的新消息时,此人将是列表中的第一个。

我搜索了很多,我能找到的只是添加、删除、拖放排序。我正在寻找它在用户收到一条消息时自动发生,该消息将是列表中的第一个。

我现在拥有的所有代码都是带有虚拟数据的平面列表

现在可以说我希望 id 3 成为数字 1 而无需刷新/重新加载平面列表,我知道我应该使用动画,但我在动画 RN 方面并不强。

import { SafeAreaView, View, FlatList, StyleSheet, Text } from 'react-native';
import Constants from 'expo-constants';

const DATA = [
  {
    id: '1',
    title: 'First Item',
  },
  {
    id: '2',
    title: 'Second Item',
  },
  {
    id: '3',
    title: 'Third Item',
  },
];

function Item({ title }) {
  return (
    <View style={styles.item}>
      <Text style={styles.title}>{title}</Text>
    </View>
  );
}

export default function App() {
  return (
    <SafeAreaView style={styles.container}>
      <FlatList
        data={DATA}
        renderItem={({ item }) => <Item title={item.title} />}
        keyExtractor={item => item.id}
      />
    </SafeAreaView>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    marginTop: Constants.statusBarHeight,
  },
  item: {
    backgroundColor: '#f9c2ff',
    padding: 20,
    marginVertical: 8,
    marginHorizontal: 16,
  },
  title: {
    fontSize: 32,
  },
});

标签: javascriptreactjsreact-native

解决方案


推荐阅读