首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react-spring :转换组件问题

react-spring :转换组件问题
EN

Stack Overflow用户
提问于 2020-01-08 21:03:13
回答 1查看 365关注 0票数 0

我使用的是react-spring,过渡渲染属性组件。

我面临着一种边缘情况,即使在通过setState()更新了项之后,component中使用的项也会显示旧值并向其追加新值。

我期待的是一个行为,项目应该在转换组件中重新呈现项目列表。

知道我可能遗漏了什么吗?

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 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 }}

如果这解决了你的问题,我不确定是否有必要重新设置和唯一。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59646467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档