我仍然是新来的反应者,我仍然对变态还不太了解。
我已经看到很多关于此的帖子,但是我不了解突变过程是如何发生的,所以我认为有必要提出这个问题。
首先我需要知道这是突变状态吗?
this.setState(prevState=>({
colors:this.state.colors.map((c,i)=>{
return{
original_color:c.original_color,
hex_color:c.hex_color,
isActive:false
}
})
}))
OR
let newData = this.state.colors.map((c,i)=>{
return{
original_color:c.original_color,
hex_color:c.hex_color,
isActive:false
}
})
this.setState({
colors: newData
})
在这种情况下,我只想将所有值isActive
设置为false
最后
我想将此值设置为空
this.setState({
colors:[]
})
答案 0 :(得分:0)
您的状态在任何情况下都不会改变。 .map()
返回一个新数组。仅当您直接将状态分配给另一个值而不调用.setState()
时,状态才会发生变化:
this.state.value = anotherValue;
或者:
this.state.value.push(anotherValue)
答案 1 :(得分:0)
由于.map()
作为结果返回了一个新数组,因此使用它是安全的,不被视为突变。
基本上,任何不更改原始状态或直接引用原始状态的内容都不会被视为突变。