NextJS数据获取方式
技术
关于posts的数据获取,有下面几种方式:
最佳的获取 posts
数据的方式是直接在 postsList.jsx
中访问数据库获取posts
(方法1)。以下是各方法的分析:
postsList
里访问数据库获取 posts
优点:
缺点:
getPosts
写进 postsAction
然后调用 action
获取 posts
优点:
缺点:
postsAction
主要用于数据获取,可能不符合“action”设计用于数据修改的初衷。api/blog/list
里写 GET 方法,然后 postsList
里 fetch API 的绝对路径获取posts
优点:
缺点:
postList
改为客户端,在 api/blog/list
里写 GET 方法,在客户端 fetch 到posts
优点:
缺点:
基于以上分析,方法1 是最佳选择,特别是在使用 Next.js 服务器组件时。它简化了数据获取流程,充分利用了服务器端渲染的优势,减少了不必要的客户端请求和复杂性。同时,可以通过适当的代码结构优化,实现逻辑与组件的合理分离。
// postsList.jsx
import { connectToDb } from '@/lib/connectToDb';
import { Post } from '@/lib/models/post';
import Link from 'next/link';
import React from 'react';
export default async function PostList() {
await connectToDb();
const posts = await Post.find().lean();
return (
<ul>
{posts.map((post) => (
<li key={post._id}>
<Link href={`/blog/${post.slug}`}>{post.title}</Link>
</li>
))}
</ul>
);
}