首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用for循环和setState的动态状态数。然后需要在所有设置完成后使用状态

使用for循环和setState的动态状态数。然后需要在所有设置完成后使用状态
EN

Stack Overflow用户
提问于 2020-12-19 04:04:06
回答 1查看 21关注 0票数 0

状态的动态数量。状态的数量是动态的,并且取决于这个mppt数,而这个数又取决于用户的输入。我创建了状态,然后在for循环中创建了所有状态之后...我想用它做点什么。我通常会在回调中这样做,但我使用for循环来创建动态数量的状态。这将根据mppt编号设置元素的默认值和数量。之后,它将由onChange进行更新。

代码语言:javascript
复制
const defaultValues = {
    1:{
        isc: 10.88,
power: 3834.5999999999995,
vmp: 497,
voc: 584.3312579999999,
se: 14,
st: 1,
    },


2: {isc: 9.00,
    power: 3834.5999999999995,
    vmp: 600,
    voc: 584.3312579999999,
    se: 12,
    st: 1},
}

const mppt = 2


.
.
.


   componentDidMount(){
        console.log('Sizing Mounted?')
        for(let i=1 ; i <= mppt ; i++){
            console.log(i)
            this.setState({ [`${i}`] : defaultValues[i]}, ()=>{
                console.log('state been set?')
                console.log(this.state[`${i}`]) //this works
            })
        }
        console.log('Check if state has been checked by here to feed into next function')
        console.log(this.state[`1`])  // undefined

        //This function uses the new set states 
        this.createElementDefaults()  //uses undefined state values

    }

setStates的异步特性正在扰乱这一点。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-19 04:32:02

尝试先构建对象,将其设置为状态,然后在回调中使用您的函数:

代码语言:javascript
复制
  componentDidMount() {
    let s = {};
    for (let i = 1; i <= mppt; i++) {
      s[`${i}`] = defaultValues[i];
    }

    this.setState((prevState) => ({ ...s }), () => {
        console.log(this.state);
        this.createElementDefaults()
    });
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65363264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档