使用功能.map()的更新状态是突变状态吗?

时间:2019-01-03 07:04:51

标签: javascript reactjs

我仍然是新来的反应者,我仍然对变态还不太了解。

我已经看到很多关于此的帖子,但是我不了解突变过程是如何发生的,所以我认为有必要提出这个问题。

首先我需要知道这是突变状态吗?

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:[]
        })

2 个答案:

答案 0 :(得分:0)

您的状态在任何情况下都不会改变。 .map()返回一个新数组。仅当您直接将状态分配给另一个值而不调用.setState()时,状态才会发生变化:

this.state.value = anotherValue;

或者:

this.state.value.push(anotherValue)

答案 1 :(得分:0)

由于.map()作为结果返回了一个新数组,因此使用它是安全的,不被视为突变。

基本上,任何不更改原始状态或直接引用原始状态的内容都不会被视为突变。