React在componentWillMount中請求接口數據結束后再執行render


1.在getInitialState中初始化isloading,初始值false

1 getInitialState() {
2         return {
3             editionid: '',
4             isloading:false
5         }
6 }

2.

解決方法:
增加一個加載狀態,默認為 false,調用 componentWillMount() 時,設置為 true,當這個加載狀態是 true 時,暫不渲染,當回調函數執行完畢后,設置為 false,此時再調用 render();
 1     componentWillMount() {
 2         //獲取當前請求的域名地址
 3         this.setState({isLoading: true})
 4         this.getShopId();
 5     },
 6 
 7 
 8     getShopId(){      
 9 this.get({url:"Api/lists/module/shops/key/dac509bd90a82719a3569291e12c24a6f1af4bac/id/8",
10         }).then((res)=> {
11             console.log("res",res)
12             if(res.error_code==0){
13                 let  editionid = res.result[0].editionid
14                 if(editionid==1) {
15                     this.handleClickVideo('', videoDataInit2[0]);
16                     this.setState({videoData:videoData1,videoDataFlag:true,rongqiuPic:rongqiuWz,editionid:editionid})
17                 }else if(editionid==2){
18                     this.handleClickVideo('', videoDataInit[0]);
19                     this.setState({videoData:videoData2,videoDataFlag:false,rongqiuPic:rongqiu,editionid:editionid})
20                 }else{
21                     this.handleClickVideo('', videoDataInit[0]);
22                     this.setState({videoData:videoData2,videoDataFlag:false,rongqiuPic:rongqiu,editionid:editionid})
23                 }
24             }
25             this.setState({isLoading: false})
26         });
27     },

3.最后對render進行處理

1 render() {
2   let {isLoading} = this.state
3   if (isLoading) {
4     return <p>isLoading...</p>
5   }
6   return (
7     <div>要顯示的部分</div>
8   )
9 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM