亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

next第一次初始化頁面請求的數據為空解決辦法

標簽:
React.JS

开发next的过程中又遇到这样的一个问题:浏览器头一次打开next项目的某一个页面,该页面需要请求后端的数据,然而在请求到接口数据之前getInitialProps方法已经return出结果导致页面没有接口数据。当多次打开页面后就不会有这种情况。
分析可能的原因:
1.浏览器存在缓存,直接使用缓存的页面数据。
2.项目的数据接口太深,需要在每个循环中请求数据
3.重新刷新浏览器页面就正常
代码问题分析: 
1.在getInitialProps逻辑中我是有使用async和await因此可以保证接口是有请求的
2.每个循环的请求结果我会加到相应的这个对象的新建字段中

test.getInitialProps = async (res) => {
  const { fnavlist, options, links } = await init()
  const id = res.req ? hrefObj(res.req.url).id : res.query.id
  const navBar = await fnavlist.filter(item => item.name.includes('支持'))[0].children.filter(item => item.name.includes('下载'))[0]
  await navBar.children.map(async items => {
    await items.children.map(async item => {
      let { data } = await getPageContent(item.id, 1, 20)
      item.con = await data.ArticlePage.Articles
      return item
    })
    return items
  })

  return {
    fnavlist,
    options,
    links, navBar,
    current: navBar.children.filter(item => item.id == id)[0],
    list: navBar.children.filter(item => item.id == id)[0].children
  }
};

解决:
当页面中没有关键的数据的时候刷新页面。(个人感觉这不是最优解决办法后续会继续深入研究)

useEffect(() => {
    if (!props.list[0].con) {//切换tab没有数据bug重新刷新页面
      window.location.href = window.location.href
    }
  })


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
Web前端工程師
手記
粉絲
6
獲贊與收藏
35

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消