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;

相关内容

热门资讯

黑科技肯定(Wepoke辅助挂... 黑科技肯定(Wepoke辅助挂)外挂透明挂辅助黑科技(黑科技ai)原来存在有挂(真实有挂)-哔哩哔哩...
黑科技规律(Wepoke大厅房... 黑科技规律(Wepoke大厅房)外挂透明挂辅助代打(智能ai)都是是真的有挂(有挂教学)-哔哩哔哩;...
黑科技科技(wepoke有挂)... 黑科技科技(wepoke有挂)外挂透明挂辅助AI(透明挂黑科技)确实真的是有挂(今日头条)-哔哩哔哩...
黑科技有挂(WPK私人房)外挂... 黑科技有挂(WPK私人房)外挂透明挂辅助设备(透明挂黑科技)原来真的是有挂(竟然有挂)-哔哩哔哩1、...
黑科技免费(WPK辅助挂)外挂... 黑科技免费(WPK辅助挂)外挂透明挂辅助AI(透视)其实存在有挂(证实有挂)-哔哩哔哩WPK辅助挂辅...
黑科技黑科技(WPK最新版)外... 黑科技黑科技(WPK最新版)外挂透明挂辅助助手(黑科技ai)真是是有挂(有挂技巧)-哔哩哔哩1、游戏...
黑科技新版(aa扑克有外挂)外... 黑科技新版(aa扑克有外挂)外挂透明挂辅助代打(透明黑科技)好像有挂(有挂技巧)-哔哩哔哩1、让任何...
黑科技代打(Wepoke神器)... 黑科技代打(Wepoke神器)外挂透明挂辅助下载(透明挂)都是有挂(有挂方法)-哔哩哔哩1、进入游戏...
黑科技中牌率(鱼扑克)外挂透明... 黑科技中牌率(鱼扑克)外挂透明挂辅助黑科技(透明挂)原来有挂(有挂头条)-哔哩哔哩1、进入游戏-大厅...
黑科技黑科技(扑克世界app)... 黑科技黑科技(扑克世界app)外挂透明挂辅助神器(ai辅助)切实是有挂(有挂秘诀)-哔哩哔哩;一、扑...