WatermelonDB 列表排序

问题描述 投票:0回答:1

在我的 React Native 应用程序中,我有一个 post 组件。此帖子组件使用 WatermelonDB 中的

withObservables
来呈现帖子及其评论:

const enhance = withObservables(["post"], ({ post }) => ({
    post,
    comments: post.comments
}));

const EnhancedPost = enhance(Post);

export default Post;

帖子的评论呈现在平面列表中,如下所示:

<FlatList
    data={comments}
    key={"some-key"}
    renderItem={renderComment}
/>

我希望能够根据用户选择的内容按几个不同的字段对这些评论进行排序,例如标题、作者、日期等。我该怎么做?

react-native watermelondb
1个回答
0
投票

我对 WatermelonDB 中的数据进行排序只是在 FlatList 的数据参数中对其进行排序。

<FlatList
  data={ comments.sort((a, b) => b.createdAt - a.createdAt) }
  renderItem={renderComment}
  key={"some-key"}
/>

我相信您也可以对查询中来自 WatermelonDB 的数据进行排序,但我相信这需要长时间编写查询(来自 WatermelonDB 文档的片段)

database.get('comments').query(
  // sorts by number of likes from the most likes to the fewest
  Q.sortBy('likes', Q.desc),
  // if two comments have the same number of likes, the one with fewest dislikes will be at the top
  Q.sortBy('dislikes', Q.asc),
  // limit number of comments to 100, skipping the first 50
  Q.skip(50),
  Q.take(100),
)

在查询级别排序不一定比在 JavaScript 中更好或更高效,但是 Q.sortBy 最重要的用例是与 Q.skip 和 Q.take 一起使用来实现分页 - 限制排序的数量从数据库加载到内存的记录非常长的列表

© www.soinside.com 2019 - 2024. All rights reserved.