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;

相关内容

热门资讯

玩家必看分享!wepoker辅... 很多人使用云端 AI 时,都担心wepoker辅助器安装包、内部资料上传带来隐私风险。这款本地运行的...
新2025教程!wepoker... 您好:wepoker免费脚本咨询这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很...
玩家必看科普!!wpk辅助器是... AI 黑科技赛道又上新,这款智能处理工具堪称效率开挂,专门面向短视频创作者打造。它打通脚本撰写、AI...
分享一款!!wepoker怎么... 您好:wepoker怎么拿到好牌这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很...
科技教程!wpk免费辅助,微扑... 科技教程!wpk免费辅助,微扑克哪里有挂插件(真是是真的有辅助)主打本地运行的 AI 黑科技工具迎来...
我来教大家!德普之星辅助器怎么... 很多人使用云端 AI 时,都担心德普之星辅助器怎么用、内部资料上传带来隐私风险。这款本地运行的 AI...
我来教教你!有没有人wepok... 我来教教你!有没有人wepoker,微扑克怎么开挂插件(本然存在有辅助挂)AI 智能体黑科技再上新,...
总算了解!wepoker作弊辅... 本地部署 AI 黑科技工具迎来新版本,不用上传文件到云端就能完成wepoker作弊辅助解析、 AI ...
必看攻略!!we poker辅... 很多人使用云端 AI 时,都担心we poker辅助器下载、内部资料上传带来隐私风险。这款本地运行的...
玩家必备攻略!wepoker私... 玩家必备攻略!wepoker私人局开挂视频,wepoker开挂破解脚本(先前真的有开挂)AI 智能体...