reactjs - 使用 Next.js 预加载 getServerSideProps 数据?
问题描述
我有一个简单的 React 组件:
const Page = ({ data }) => {
return (
<header>
{data.length !== 0 ?
<>
{data((d) =>
// render data
)}
</>
:
<>Loading...</>
}
</header>
)
}
我正在使用推荐的 Next.js 获取数据getServerSideProps
:
export async function getServerSideProps() {
// Fetch data from external API
const res = await fetch(`someurl`)
const data = await res.json()
// Pass data to the page via props
return { props: { data } }
}
现在,看在上帝的份上,我不明白为什么<>Loading...</>
从不渲染。页面是空白的,然后所有内容都会弹出。为什么会发生,我该如何解决?当然 data.length 在获取之前为 0 ......
注意我正在使用动态路由,不想使用getStaticProps
.
解决方案
getServerSideProps
始终在服务器端运行,也用于客户端导航。
当您data
从 getServerSideProps
(如果fetch
方法执行时没有错误)返回时,它将始终返回一个值。
在您的示例<Loading />
中,仅当从返回的数据fetch
长度为 0 并且在fetch
.
这里的文档https://nextjs.org/docs/basic-features/data-fetching#getserversideprops-server-side-rendering
推荐阅读
- java - 无法在 Windows Server 2012R 64 位上创建新的本机线程
- python-3.x - 从 apscheduler 中的另一个线程删除/停止正在运行的作业
- excel - Excel从连续最后一个填充单元格中的字母数字中提取文本
- typescript - 用抽象方法实例化类
- sympy - 如果集成,SymPy 函数 integration_steps 是否会显示结果?
- php - 用于加密和解密的 PHP 代码在每次执行时创建不同的密文。任何人都可以用 PL/SQL 中的等效代码帮助我吗
- dart - 在 Flutter App 上按下按钮后,如何移动到屏幕下方的特定 Widget?
- kdb - 以字符串为参数的函数
- r - 当每个计算值都依赖于前一个值时如何使用 apply
- xml - 祖先和后代的长形式 - Xpath 轴