gpt4 book ai didi

javascript - 在 react 运动中重新启动状态/ Prop 更改的动画

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:21:46 24 4
gpt4 key购买 nike

我正在尝试使用从 x: -20x: 0 的 react-motion 为面包屑设置动画。

文件夹 > 子文件夹 > 子文件夹

问题是,面包屑在第一次渲染时完美呈现动画效果。随后当 props 甚至 state 发生变化时,动画不会更新。这似乎是一个 known bug .

我的问题是,如何在状态/ Prop 更改时“重新启动”动画?

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>
)

最佳答案

通过 react-motion,我通过在 MotionStaggeredMotion 中设置一个独特的 key Prop 找到了解决方法 导致它在状态更改时重新呈现。

引用this issue在官方仓库上。

对于我的情况,我通过将 key 属性设置为面包屑列表的长度来解决它。

<StaggeredMotion
key={this.props.crumbs.length}
...>
...
</StaggeredMotion>

关于javascript - 在 react 运动中重新启动状态/ Prop 更改的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41195392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com