AsyncAwait在第一次调用时无法在NextJS/ReactFirebase/Firestore上工作
创始人
2024-09-21 02:30:14
0次

这个问题通常出现在使用firebase / firestore API进行数据获取的情况下。root cause在于初次加载进入页面时,服务端渲染 (SSR) 使我们的getInitialProps在服务端被调用从而导致我们的异步代码不会执行。因此我们需要在客户端的componentDidMount周期内进行,判断当前页面是在客户端还是服务端,并进行处理在客户端初次渲染时再次拉取数据,而不是仅限服务端。

例如:

import { firebase } from "../lib/firebase";

function HomePage(props) { return (

Home Page
) }

HomePage.getInitialProps = async ({ req }) => { // 如果在服务端,请等待数据完成加载 if (req) { // Create a reference to the cities collection const citiesRef = firebase.firestore.collection('cities'); const snapshot = await citiesRef.get(); const data = snapshot.docs.map((doc) => ({ id: doc.id, ...doc.data })); return { cities: data }; }

return { cities: [] }; };

class HomePageContainer extends React.Component { state = { cities: this.props.cities };

async componentDidMount() { // 如果在客户端,并且没有数据,请等待数据完成加载 if (!this.state.cities.length) { // Create a reference to the cities collection const citiesRef = firebase.firestore.collection('cities'); const snapshot = await citiesRef.get(); const data = snapshot.docs.map((doc) => ({ id: doc.id, ...doc.data })); this.setState({ cities: data }); } }

render() { return ; } }

export default HomePageContainer;

相关内容

热门资讯

盘点十款开挂!牛总督大厅ai智... 盘点十款开挂!牛总督大厅ai智能开挂软件,牛总督大厅有挂么辅助秘籍(本来有挂解密)1、很好的工具软件...
传递经验透视挂!九龙娱乐ai智... 传递经验透视挂!九龙娱乐ai智能透视挂技巧,九龙娱乐是如何开挂的手筋(本来有挂辅助)1、在九龙娱乐插...
科技介绍辅助挂!新玄灵ai智能... 科技介绍辅助挂!新玄灵ai智能辅助挂脚本,新玄灵怎么开挂讲义(总是发现有挂)1、上手简单,内置详细流...
分享实测透视挂!流年大厅ai智... 分享实测透视挂!流年大厅ai智能透视挂软件,流年大厅透视脚本绝活儿(好像发现有挂)一、流年大厅游戏安...
专业讨论透视挂!鸿运新版大厅a... 专业讨论透视挂!鸿运新版大厅ai智能透视挂插件,鸿运新版大厅透视软件下载绝活(原来发现有挂)1、许多...
据相关数据显示透视挂!超耀大厅... 据相关数据显示透视挂!超耀大厅ai智能透视挂app,超耀大厅开挂透视教程模块(一直有挂猫腻)一、超耀...
研究成果辅助挂!新澳娱大厅ai... 研究成果辅助挂!新澳娱大厅ai智能辅助挂插件,新澳娱大厅开挂工具指南(切实有挂技术)1、新澳娱大厅公...
每日必看透视挂!新奇玩乐ai智... 每日必看透视挂!新奇玩乐ai智能透视挂方法,新奇玩乐有挂吗资料(总是【自定义5】)1、很好的工具软件...
玩家攻略推荐开挂!老夫子大厅a... 玩家攻略推荐开挂!老夫子大厅ai智能开挂app,老夫子大厅透视方法绝活(果然有挂技术)1、上手简单,...
重大来袭辅助器!龙王大厅ai智... 重大来袭辅助器!龙王大厅ai智能辅助器工具,龙王大厅开挂脚本手册(真是发现有挂)1、下载好龙王大厅透...