动画单个DOM元素而不重新渲染组件
animate single DOM element without re-rendering component
我有以下react组件:
return(
<div className="project-page">
<div className="jumbotron">
<div className="container">
<h1>{currentProject.title}</h1>
</div>
</div>
<div className="container ">
<ReactCSSTransitionGroup transitionName="example" transitionAppear={true}>
<div className="project-image-container">
<img src={currentProject.image} alt="Project Image" />
</div>
</ReactCSSTransitionGroup>
.....
我使用ReactCSSTransitionGroup
来动画图像,该图像在组件的初始负载上工作良好。然而,当组件被更新为新的dataset/image时,动画不工作。
我怎样才能使它工作?
react目前不支持更新内容的动画。目前,ReactCSSTransitionGroup
只能激活正在添加或删除的组件。
然而,有可能使react认为组件已被删除或添加。React依赖于key
属性来唯一地标识子组件。
所以你应该可以这样做:
return(
var key = projectId;
<ReactCSSTransitionGroup key={key} transitionName="example" transitionAppear={true}>
<div className="project-image-container">
<img src={currentProject.image} alt="Project Image" />
</div>
</ReactCSSTransitionGroup>
在本例中,必须传递唯一的id
或任何其他值。它甚至不需要独一无二。你只需要在组件更新时用任何值来更新它。
本博客更深入地讨论了这个主题。
相关文章:
- 追加新web组件时出现线程问题
- 如何强制对模态进行新渲染
- React-router 在添加历史记录后不会渲染组件
- react使用扩散属性渲染组件列表
- 使用Handlebars从动态变量渲染组件
- 反应嵌套路由不渲染组件
- 反应.js如何在组件内部渲染组件
- 使用其名称进行 React 渲染组件
- ReactJs:如何在渲染组件时传递初始状态
- 如何使用 Flux+React.js 从数据库回调渲染组件
- 使用不同道具在容器中多次响应渲染组件
- 使用vue.js在其外部渲染组件模板
- ReactJs上的无尽循环渲染组件
- 当另一个组件发生更改时,React重新渲染组件
- react.js在不同的位置渲染组件
- React.render()未渲染组件
- Rails和ReactJS -重新渲染组件
- React: componentDidMount + setState不重新渲染组件
- 如何在React 0.14中使用新道具在顶层再次渲染组件
- 在递归聚合物组件中插入新子组件时,无法读取未定义的属性“concat”