react爬坑---通過請求接口,返回條件判斷渲染組件AB


在react組件開發中,遇到需要請求接口來判斷展示組件A或者B,但由於react生命周期函數,組件第一次render的時候,接口還沒有返回數據,無法確定render什么組件。此時,新增一個布爾值狀態isResOk: false,如果isResOk為false,請求沒有成功,則不展示任何組件;如果isResOk為true,請求成功,再根據接口返回值判斷展示哪一個組件。

在render函數里面,通過條件1進行判斷接口是否返回:

(1)接口沒有返回,那么return false,不渲染任何組件;

(2)接口有返回,通過條件2判斷展示哪個組件。

 1 class A extends Component {
 2   static propTypes = {
 3     children: PropTypes.any,
 4     isShowInfo: PropTypes.func,
 5   }
 6   state = {
 7     isShow: true,
 8     isResOk: false,
 9   }
10 
11   componentDidMount() {
12     const { isShowInfo } = this.props
13     isShowInfo().then(res => {
14       this.setState({
15         isShow: res.Displayed,
16         isResOk: true,
17       })
18     })
19   }
20 
21   renderTitleNotic = () => {
22     return (
23       <strong>提醒:</strong>
24     )
25   }
26 
27   render() {
28     const { children } = this.props
29     const { isShow, isResOk } = this.state
30     if (isResOk) {
31       return isShow ? children : this.renderTitleNotic()
32     } else {
33       return false
34     }
35   }
36 }
37 export default A

備注:

嘗試過,如果請求接口還未返回數據時,調用Loading組件,會存在第一次render為Loading組件,請求接口返回數據,更新數據后render為A||B組件 ;會導致Loading組件卸載的時候,在更新數據,造成內存泄漏問題。


免責聲明!

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



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