通过在React中使用循环来使用setstate

时间:2019-06-18 11:14:57

标签: javascript reactjs

我有两个对象数组。我想通过遍历这两个数组来设置变量的状态。

我有一个状态,

this.state = {  selectedValue: {} }

我有这两个对象数组,

this.props.untracked.content && `this.props.tracked.content`

我要设定的状态是,

this.setState({
        selectedValue: {
          ...this.state.selectedValue,
          [`${resumeId}`]: type
        }
      }

在另一个不需要循环的地方。 现在我需要遍历这两个,然后需要setState,

我做了循环,

for (const item of 

[...this.props.untracked.content,...this.props.tracked.content]) {
    this.setState({
     selectedValue: {
          ...this.state.selectedValue,
          [`${item.id}`]: item.value
        }
})    
}

那么,有人可以帮助我吗?谢谢。

2 个答案:

答案 0 :(得分:1)

最简单的方法是不使用function RandomLine($url) { $f_contents = file($url); return $f_contents[rand(0, count($f_contents) - 1)]; } $line1 = RandomLine("/ime/ime.txt"); $line2 = RandomLine("/prezime/prezime.txt"); $line3 = RandomLine("/email/email.txt"); $result = "{$line1}{$line2}{$line3}"; echo $result; 进行所有处理,最后使用setState一次。

答案 1 :(得分:1)

当新状态取决于当前状态时,请使用setState(oldState => newState)

this.setState(oldState => ({
     selectedValue: {
          ...oldState.selectedValue,
          [`${item.id}`]: item.value
     }
}));

另外,最好事先准备所有更新:

const updates = {};
for (const item of 
    [...this.props.untracked.content,...this.props.tracked.content]
) {
    updates[item.id] = item.value;
}

this.setState(oldState => ({
     selectedValue: {
          ...oldState.selectedValue,
          ...updates,
     }
}));