Javascript 设置不重新渲染组件的状态

Javascript 设置不重新渲染组件的状态,javascript,reactjs,render,setstate,Javascript,Reactjs,Render,Setstate,我看过以前的答案,但找不到解决办法。 我的州有一副“色卡”: 这将使用以下功能进行更新: changeDifficulty = (e) => { let newDeck = [] let howManyCards = e.target.value // this decides difficulty level for (let i = 0; i < howManyCards; i++) { newDeck.push(this.allCard

我看过以前的答案,但找不到解决办法。 我的州有一副“色卡”:

这将使用以下功能进行更新:

   changeDifficulty = (e) => {
    let newDeck = []
    let howManyCards = e.target.value // this decides difficulty level
    for (let i = 0; i < howManyCards; i++) {
      newDeck.push(this.allCards[i])
    }
    this.setState({currentDeck: newDeck}) 
  }

写入此文件时,数组引用的状态未更新

 this.setState({currentDeck: newDeck}) 
由于引用未更新,react渲染器不知道更新。你需要做的是创建一个新的数组并将其推到如下状态

 this.setState({currentDeck: [...newDeck]}) 

我在这里看不到任何问题-可能值得在这里或JSFIDLE创建一个可运行的代码段。此外,您可以使用
slice
-
changeDemobility=()=>{this.setState({currentDeck:this.allCards.slice(0,Number(e.target.value))}
。我更喜欢使用返回新数组的数组操作符,比如
slice
map
filter
等,而不是依赖于创建的新数组并推送它们,它保证您不会错过先创建一个新数组,然后想知道为什么state没有更新试图找出我们所说的JSFIDLE。谢谢你的建议。它是。。。首先创建了一个新数组-
让newDeck=[]
哦,很抱歉我错过了这一部分。在这种情况下,我认为给定的代码没有任何问题。你能在更新状态之前登录newDeck并在帖子中添加更多相关代码吗?@sabbir.alam我刚刚添加了console.log,但它实际上没有显示任何问题。即使I console.log使用其他函数记录状态,它也会显示状态已更新。它只是拒绝重新渲染组件
Array(8) [ "#fca7f3 ", "white", " #6da740  ", "  #f6faba  ", " #ccc5c1 ", "  #f7791f  ", " #575657 ", " #03faf5 " ]
Array(12) [ "#fca7f3 ", "white", " #6da740  ", "  #f6faba  ", " #ccc5c1 ", "  #f7791f  ", " #575657 ", " #03faf5 ", " #13afdb ", " #7509e2 ", … ]
 this.setState({currentDeck: newDeck}) 
 this.setState({currentDeck: [...newDeck]})