1分ごとに最新のスコアを自動的に更新するハイスコアリストがあります。リアクションのCSSトランジションの要素が状態変化を生き延びることはありません
次に、コンポーネントをthis.setState({ data: newData });
で更新します。
以下、sort
のスコアで新しいデータをmap
でそれぞれstyle.top
に更新して実行します。
Javascriptを
...
let current = this.state.data.sort((a,b) => {
if(a.score < b.score) return -1;
if(a.score > b.score) return 1;
return 0;
});
let items = current.map((item,i) => {
return (
<div
key={item.name}
className="item"
style={{ top: (i*30) + 'px', backgroundColor: item.color }}>
{item.name}
</div>
);
});
return (
<div>
{items}
</div>
);
CSSは
.item {
position: absolute;
transition: top 1s;
}
私はアイテムがアップアニメーション化するとその新しい位置までが、これは起こりません。ブラウザはDOMの一部を記憶しているように見えますが、他の部分は記憶していないようです。
Reactは、React Developer Toolsを使用して検査すると、固有のキーを使用してどのアイテムが実際のDOMを使用しているかを理解しているようです。
見知らぬ人でも、リストを上に移動するアイテム(高いスコア)だけが記憶されているようです。下に移動する項目が再作成され、そのために移行が機能しません。彼らは彼らの新しい地位に移行することなく、ただ存在する。
Here is a working example to demonstrate. (JSFiddle)
完璧ですそれ!ありがとうございました! –