以下是react toe,CodePen在这里的改进版本
我在移动描述中添加了时间(只查看li
何时呈现):
<li key={move}>
<button onClick={() => this.jumpTo(move)}>{desc + ' ' + +new Date()}</button>
</li>
预期结果:每个列表项都有不同的时间,因为li
有key
,在每次移动时都不会重新呈现。
实际发生的事情:每次移动时,都会对每个li
更改进行时间处理(每个li
都会呈现)。Go to game start 1512330036500 Go to move #1 1512330036500 Go to move #2 1512330036500 Go to move #3 1512330036500 Go to move #4 1512330036500 Go to move #5 1512330036500
我对它应该如何表现的理解有什么问题?
有没有办法让它像我期望的那样起作用?
发布于 2017-12-03 20:41:55
使用key
支柱,React知道如何在更新阶段匹配循环中的元素,这样如果没有必要,它就不会重新呈现它。因为history.map
每次都返回不同的数组,所以没有办法知道如何在没有key
的情况下匹配元素。然而,这并不意味着组件将永远不会被重新呈现。
在您的示例中,React是重新呈现您的li
,因为您正在通过在每次迭代中使用new Date()
来更改li
的children
支柱。
只需将时间戳添加到状态:history
:https://codepen.io/anon/pen/gXqEqb,就可以实现所要做的事情。
https://stackoverflow.com/questions/47622528
复制相似问题