作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想为某些组件启用布局动画,但是一旦它被激活,所有正在渲染的组件都会受到布局动画的影响。例如,我有
<container>
<waterfall/>
<menu/>
</container>
最佳答案
我遇到了类似的问题,这是我用 layoutanimation
解决的方法:
解释
在容器组件中保留一个状态变量,作为 Prop 传递给菜单:<menu reload={this.state.doSomethingInMenu}>
在容器组件中,使用 setTimeout
设置菜单变量,以便将控制权传递回 DOM 并呈现更改(没有动画)。运行 setTimeout 后,变量将更新,菜单 Prop 将更改,导致重新加载。
在菜单组件中,检查该变量是否已更新为您期望的值。如果有,请调用 LayoutAnimation.configureNext
.这将导致下一次渲染(只是菜单更改)被动画化。
代码概述
容器组件
getInitialState: function() {
return { doSomethingInMenu: false };
},
// Do something that causes the change
// Then call setTimeout to change the state variable
setTimeout(() => {
this.setState({ doSomethingInMenu: true });
},750)
<menu reload={this.state.doSomethingInMenu} />
componentWillReceiveProps: function(nextProps) {
if (nextProps.reload) {
LayoutAnimation.configureNext(LayoutAnimation.Presets.spring);
// Set the menu state variable that causes the update
this.setState({field: value})
}
},
关于layout - react 原生 : How to selectively enable LayoutAnimation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40222515/
我是一名优秀的程序员,十分优秀!