reactjs - 使用 for 循环和 setState 的动态状态数。然后需要在所有设置后使用状态
问题描述
动态状态数。状态的数量是动态的并且取决于这个mppt
取决于用户输入的数量。我创建了状态,然后在 for 循环中创建了它们之后......我想用它做点什么。我通常会在回调中执行此操作,但我使用 for 循环来创建动态数量的状态。这会根据数量设置默认值和元素mppt
数量。之后,它将由onChange
.
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 的异步性质使这一点变得混乱。有什么建议么?
解决方案
尝试先构建对象,将其设置为状态,然后在回调中使用您的功能:
componentDidMount() {
let s = {};
for (let i = 1; i <= mppt; i++) {
s[`${i}`] = defaultValues[i];
}
this.setState((prevState) => ({ ...s }), () => {
console.log(this.state);
this.createElementDefaults()
});
}
推荐阅读
- android - 如何从数据库中获取特定用户的数据
- go - 如何组织一个 Go 项目
- python - Anaconda Prompt 自动关闭
- docker - Confluent 控制中心未显示系统运行状况(对于多集群配置)
- css - CSS文本动画,替换文本
- java - slf4j 记录器信息级别未登录 Apache Tomcat
- android - Android Studio 3.2.1:transformDexArchiveWithExternalLibsDexMergerForDebug 失败
- swift - 创建具有约束关联类型的协议数组
- ios - Secure Enclave:在创建密钥后更新 SecAccessControlCreateFlags
- node.js - 为什么在给定相同输入的情况下节点 scrypt 哈希值相同?