为了账号安全,请及时绑定邮箱和手机立即绑定

React 将我的状态更新延迟 1 次迭代

React 将我的状态更新延迟 1 次迭代

繁花不似锦 2023-04-27 14:58:59
这是更新状态的函数:    GroupByHandler = (index) =>        {            const temporary = [...this.state.header.groupByHeader];                    if(this.state.header.groupByHeader.includes(this.props.Headers[index]))            {                temporary.splice(index,1);                // console.log("[PivotTable.js]: if statement under GroupByHandler");                // console.log(this.props.Headers[index]);            }            else            {                temporary.push(this.props.Headers[index]);                // console.log("[PivotTable.js]: else statement under GroupByHandler");                // console.log(this.props.Headers[index]);                // console.log(temporary);            }            this.setState({                header: {                    ...this.state.header,                    groupByHeader: temporary                }            });            console.log("[PivotTable.js]: ");            console.log(temporary);            console.log(this.state.header.groupByHeader);            console.log("Temporary: ");            console.log(temporary);        }我的控制台输出如下所示:[数据透视表.js]:PivotTable.js:43 [“广告商”]数据透视表.js:44 []PivotTable.js:45 临时:PivotTable.js:46 [“广告商”]我的状态是这样的:    state = {            header: {                ActiveHeaderIndex: this.props.ActiveIndex,                isHeaderAscending: true,                groupByHeader: []            }}谁能帮我调试我哪里出错了?我遵循的方式setState不正确吗?temporary已更新但setState由于某种原因未更新。
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

你能这样试试吗

 this.setState( 
      Object.assign(this.state.header, { groupByHeader: temporary })
    );


查看完整回答
反对 回复 2023-04-27
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

如果您想在setState工作后立即获得更新状态,则 setState 正在异步工作,那么您需要使用如下所示的回调。尝试一下。


this.setState(

{

  header: {

    ...this.state.header,

    groupByHeader: temporary

  }

},

() => console.log(this.state.header.groupByHeader)

);

查看完整回答
反对 回复 2023-04-27
  • 2 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信