react.js 生命周期componentDidUpdate的另类用法:防止页面过渡刷新

本文介绍了在React应用中如何正确地使用componentDidUpdate生命周期方法来处理数据更新后的查询操作,确保只在特定条件下触发页面刷新,避免无限循环。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景:数据新增成功之后,需要返回原来的查询表,这时候的查询,需要使用react的生命周期:componentDidUpdate

componentDidUpdate() 这个生命周期的作用是当props或state更新之后,使用它更新DOM节点。如果使用不当,则查询页面会不停的调用查询的方法,不停的执行刷新操作。因此,需要给新增的方法增加一个标志,通过这个标志,判断,如果新增成功,则调用一次查询方法,否则,则不调用。

这个标志,通常在 2 个位置使用:

1. action的 新增 方法中;
2. 查询组件的 this.state 与 componentDidUpdate() 中;

这两个标志,分别是:
addGroupResponseFlag                  //新增成功的标志
addResponseFlagHas:false           //新增成功后是否更新标志,默认为false

 

下面代码展示:

//action 方法,在return前使用
let addGroupResponseFlag = httpUtils.httpResponseFlag(params); return{ type: ADD_VERSION_GROUP, data: { params, //新增成功标志 addGroupResponseFlag } }
//查询组件
constructor(props){
    super(props);
    this.state = {
  //新增完成之后是否更新标志,默认false
    addResponseFlagHas:false
    }

//页面更新数据之后需要调用这个生命周期componentDidUpdate
componentDidUpdate(){
  /**
  * 给获取数据的方法传参数,分页
  */
  let pageSize = this.state.pageSize;
  let pageNum = this.state.pageNum;
  /**
  * 这里使用的是ES6的对象解构赋值,api接收参数只有一个变量,这里的赋值,只是值{pageNum , pageSize},传的对象的值
  */
  let addGroupResponseFlag = this.props.versionGroupState.addGroupResponseFlag;
  let addResponseFlagHas = this.state.addResponseFlagHas;

  if(addGroupResponseFlag && !addResponseFlagHas){
      this.setState({
         addResponseFlagHas: true
  });

  /**
  * addGroupResponseFlag && !addResponseFlagHas 为 true 时,执行重新查询方法
  */
  this.props.searchAppVersionGroup({pageNum , pageSize});
  }

  /**
  * 如果有删除 或 修改 依次把判断方法写在下面
  */
}

 

如果有更好的方法,欢迎交流!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值