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!微扑克发牌系统(透视)好像有挂(有挂游戏)-哔哩哔哩;实战中需综合运用上述技巧,并根据牌...
黑科技工具!wpk数据统计(智... 这是一款非常优秀的wpk数据统计 ia辅助检测软件,能够让你了解到wpk数据统计中牌率当中全部隐藏参...
黑科技辅助!德扑之星攻略(黑科... 黑科技辅助!德扑之星攻略(黑科技ai)原来有挂(有挂辅助)-哔哩哔哩;原来确实真的有挂(需添加指定薇...
黑科技神器!德州之星外挂购买渠... 黑科技神器!德州之星外挂购买渠道(透明挂)好像真的有挂(有挂辅助)-哔哩哔哩1、不需要AI权限,帮助...
黑科技透明挂!wpk微扑克辅助... 黑科技透明挂!wpk微扑克辅助存在吗(ai辅助)原先真的有挂(有挂最新版)-哔哩哔哩1、不需要AI权...
黑科技好友!德州wpk德州有挂... 黑科技好友!德州wpk德州有挂吗(透明挂)一贯存在有挂(有挂神器)-哔哩哔哩是一款可以让一直输的玩家...
黑科技ai代打!wpk线上代打... 黑科技ai代打!wpk线上代打(辅助挂)果然是真的有挂(有挂打法)-哔哩哔哩;玩家必备必赢加哟《13...
黑科技能赢!微扑克怎么加入俱乐... 黑科技能赢!微扑克怎么加入俱乐部(黑科技ai)总是真的有挂(有挂辅助)-哔哩哔哩是一款可以让一直输的...
黑科技app!cloudpok... 黑科技app!cloudpoker云扑克(透视)确实有挂(有挂开挂)-哔哩哔哩是一款可以让一直输的玩...
黑科技肯定!Wepoke透明挂... 黑科技肯定!Wepoke透明挂(透视)固有真的是有挂(有挂app)-哔哩哔哩1、不需要AI权限,帮助...