我使用一些CSS动画在我的应用程序做出反应,但我有,只有一些节点动画,因为剩下的没有被重新描绘的问题,而是在渲染功能被回收。因此,他们不按预期显示CSS动画。有什么办法可以强制React重新渲染节点而不是重复使用它们?重新呈现DOM的阵营
回答
CSS动画取决于在课堂上或风格的变化。为了让动画发生,你需要改变其中的任何一个,这会强制反应重新渲染。所以我不希望this.forceUpdate()
有所作为。
在列表中,反应再使用的部件(例如,如果你重新排序列表中的项目)。例如。如果你有一个清单:
<li>1. Cat</li>
<li>2. Mouse</li>
<li>3. Dog</li>
你他们要重新排序:
<li>2. Mouse</li>
<li>1. Cat</li>
<li>3. Dog</li>
阵营在默认情况下不会交换<li>
项目。但更改<li>
项目内的文本(因为这是更轻的DOM更新)。 要强制反应以交换项目,您需要为每个组件提供一个密钥。 反应网站的进一步说明:https://facebook.github.io/react/docs/multiple-components.html#children
如果你可以分享一些代码,这将使它更容易理解你的具体问题。
你是对的。在我的情况下,我没有使用li项目,而是在父'div'内部有'div'列表。每个*都被分配一个键,因为它们是使用'.map'从一个数组中动态呈现的。我的问题是,当我改变底层数组(例如,将数组换成完全不同的数组)时,它会保留旧节点并替换其中的文本,并只渲染新节点。尽管每个节点都有一个密钥,但会发生这种情况我可以看到这是怎么可能是有用的,重复使用旧的节点,但在我的情况下,它(有时)我想要的行为相反... –
如果我给节点一个唯一的ID为重点,这将迫使它重新投降? –
你确定你是以正确的反应方式分配键吗? (有一个错误的方法来做到这一点,然后它不起作用)。请参阅:https://facebook.github.io/react/docs/multiple-components.html#dynamic-children,了解使用密钥的正确方法和错误方法。 – wintvelt
- 1. 阵营重新呈现
- 2. 重新呈现抬头 - 阵营本地
- 3. 流星阵营createContainer重新呈现
- 4. 重新呈现阵营组成新的AJAX查询参数值
- 5. 阵营DOM不会重新绘制
- 6. 阵营重新呈现动态组件(SOLR)是
- 7. 阵营路由器:防止哈希(#)从重新呈现组件
- 8. 阵营的观点是不会呈现在阵营0.14
- 9. 阵营的setState呈现行为
- 10. 阵营组件所呈现旧道具
- 11. 阵营引导无法呈现
- 12. 阵营并没有呈现新的CSS样式
- 13. 使用阵营TransitionGroup,GSAP和MobX重新呈现相同的组件
- 14. Vue.js重新呈现有序阵列
- 15. 阵营裁判不更新之间呈现
- 16. 阵营renderComponent更换DOM
- 17. 遍历与DOM阵营JS
- 18. 默认值不更新DOM重新呈现在反应
- 19. DOM重新呈现没有任何更新在reactjs
- 20. 重新呈现ListView
- 21. 错误呈现定制组件阵列阵营本地
- 22. 重新呈现骨干观点不失引用DOM
- 23. 阵营:获取目标的DOM儿童
- 24. 阵营本地的,呈现一个按钮,点击动态
- 25. 重新呈现在visualforce
- 26. 如何重新呈现flatlist?
- 27. 替代重新呈现
- 28. Protovis强制重新呈现
- 29. 重新排列从PHP阵列呈现的HTML
- 30. 阵营海量内容和重复使用服务器端呈现
CSS动画不应该依赖渲染节点。但是,如果你的情况需要它,那么你可以使用'this.forceUpdate();'重新渲染组件。 – zvona
我使用的CSS动画只有迭代计数为1,即它只发生在首次将节点加载到DOM中。 在整个渲染过程中,React似乎重用了节点,因此动画不会再运行。我会尝试'this.forceUpdate()'! –