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组件卸载的时候,在更新数据,造成内存泄漏问题。

posted @ 2020-07-15 23:55  红桃七716  阅读(1510)  评论(0编辑  收藏  举报