请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

页面总是先渲染了widget组件,后发起http请求。导致渲染widget组件时没有数据

图片描述

如上图,我在开发navigation button 导航组件时, 在home页面中引入了一个自定义的NavigationButtonWidget组件。
我在home页面初始化时调用_getNavigationButtonList()方法, 请求服务端接口,获取数据。然后将请求下来的数据传入NavigationButtonWidget组件中。
但是在页面渲染时,却发现NavigationButtonWidget组件没有渲染出来。
我在NavigationButtonWidget组件中的Items构建组件中打印,又在home页面发起http请求时打印。发现打印顺序是,先执行了NavigationButtonWidget组件中的打印,又执行了http请求响应数据的打印。
我想知道,如何才能让http请求先执行,然后再执行NavigationButtonWidget组件?

正在回答 回答被采纳积分+3

2回答

提问者 愤怒的米饭 2024-08-13 11:20:58

https://img1.sycdn.imooc.com/szimg/66bad11009817fa110911177.jpg

如上图

0 回复 有任何疑惑可以回复我~
  • 另外发现在_getNavigationButtonList
    数据回来后没有调用setState来通知界面渲染数据
    回复 有任何疑惑可以回复我~ 2024-08-14 08:45:37
CrazyCodeBoy 2024-08-12 22:46:35
问题出在调用_getNavigationButtonList方法的时候没有用await导致接口请求还没发出就已经在渲染页面了。
0 回复 有任何疑惑可以回复我~
  • 提问者 愤怒的米饭 #1
    不太理解老师说的在调用_getNavigationButtonList方法时使用await关键字是在哪里加? 
    如下图,我已经在_getNavigationButtonList方法中添加了async/awiat关键字,但是没效果;如果在类的initState()方法中对_getNavigationButtonList方法添加await,整个app就各种报错。
    回复 有任何疑惑可以回复我~ 2024-08-13 11:20:21
  • CrazyCodeBoy 回复 提问者 愤怒的米饭 #2
    在_getNavigationButtonList中进行网络请求的时候添加也是可以的,在数据返回来之后在添加数据的时候,记得调用一下setState
    回复 有任何疑惑可以回复我~ 2024-08-14 08:46:55
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信