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

  • 相关阅读:
    DokuWiki 插件使用
    DokuWiki 命名空间管理
    Ubuntu 14.10 下DokuWiki安装
    Ubuntu 14.10 下安装Ambari
    Ubuntu 14.10 下安装Ambari 问题汇总
    Hadoop 权限管理
    Spark 性能调优-内存设置-GC设置
    Ubuntu 14.10 下NodeJS Cannot find module 'npmlog'
    Hadoop 新增删除节点
    Ubuntu 14.10 下开机不进入图形化界面
  • 原文地址:https://www.cnblogs.com/minyDong/p/13311235.html
Copyright © 2020-2023  润新知