我使用的是react-spring,过渡渲染属性组件。
我面临着一种边缘情况,即使在通过setState()更新了项之后,component中使用的项也会显示旧值并向其追加新值。
我期待的是一个行为,项目应该在转换组件中重新呈现项目列表。
知道我可能遗漏了什么吗?
<ul>
<Transition
items={randomFeeds}
// keys={randomFeeds.map(item => item.id)}
keys={randomFeeds => randomFeeds.id}
from={{ transform: 'translate3d(0, -40px, 0)', opacity: 0 }}
enter={{ transform: 'translate3d(0,0,0)', opacity: 1 }}
update={{ transform: 'translate3d(0,0,0)', opacity: 1 }}
reset={true}
unique={true}
>
{item => props => (
<li style={props} key={item.id + item.riskCategoryId + item.riskCategory}>
<RimeCard
key={item.id + item.riskCategoryId + item.riskCategory}
title={item.title}
categoryId={item.riskCategoryId}
category={item.riskCategory}
link={item.link}
isTimeline={true}
date={item.publishDateString}
/>
</li>
)}
</Transition>
</ul>发布于 2020-01-09 21:34:25
如果您想要更新项,请确保您的li组件的键不会在两次更新之间更改。所以不用使用key:key={item.id + item.riskCategoryId + item.riskCategory},只需使用key={item.id}
您可能还想将leave属性添加到转换中,例如:leave={{ transform: 'translate3d(0, 40px, 0)', opacity: 0 }}
如果这解决了你的问题,我不确定是否有必要重新设置和唯一。
https://stackoverflow.com/questions/59646467
复制相似问题