2
我正在嘗試使用從x: -20
到x: 0
的反應動作來製作麪包屑動畫。反應動作狀態/道具變化的重新啓動動畫
Folder > SubFolder > Child
的問題是,麪包屑完美動畫第一渲染。隨後當props
甚至state
發生變化時,動畫不會更新。這似乎是known bug。
我的問題是,我如何「重新啓動」狀態/道具變化動畫?
const getDefaultStyles = crumbs => {
const defaultStyles = crumbs.map(() => ({x: -20}))
console.log(defaultStyles)
return defaultStyles
}
const getStyles = previousInterpolatedStyles => {
return previousInterpolatedStyles.map((_, i) => {
return i === 0 ? {x: spring(0)} : {x: spring(previousInterpolatedStyles[i-1].x)}
})
}
const Breadcrumb = ({ crumbs }) => (
<div className='breadcrumb-container'>
<StaggeredMotion
defaultStyles={getDefaultStyles(crumbs)}
styles={getStyles}>
{
interpolatedStyles =>
<div className='breadcrumb-list'>
{
interpolatedStyles.map(({x}, i) =>
<div className='breadcrumb' key={i} style={{
WebkitTransform: `translate3d(${x}px, 0, 0)`,
transform: `translate3d(${x}px, 0, 0)`
}}>
<a href='#'>Title</a>
</div>
)
}
</div>
}
</StaggeredMotion>
</div>
)
這也解決了我的問題重新動畫的Flash消息。第一次渲染總是很好,但在重新渲染時,動畫不會重置。將'key'prop設置爲'Date.now()'解決了我的問題,因爲當出現新的閃存信息時,我總是想重新設置動畫。 – SidOfc