首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何再次触发StaggerMotion进行react-motion?

如何再次触发StaggerMotion进行react-motion?
EN

Stack Overflow用户
提问于 2015-10-24 11:38:00
回答 1查看 576关注 0票数 0

我试图通过传递新的道具并再次设置状态来为react-motion重新设置StaggeredMotion的动画。我相信render方法被调用了,但是动画不会再次出现。下面是我编辑过的render()方法:

代码语言:javascript
复制
render() {
    let configs = [];
    Object.keys(this.state.ripples).forEach(key=> {
        configs.push({
            opacity: spring(1, [95, 20]),
            scale: spring(0),
            fill: this.props.style.fill,
            strokeWidth: this.props.style.strokeWidth,
            stroke: this.props.style.stroke,
            transformOrigin: '50% 50%'
        });
    });

    return (
        <StaggeredMotion defaultStyles={configs} styles={prevStyles => prevStyles.map((_, i) => {
        return i === 0 ? {
            opacity: spring(0, [95, 20]),
            scale: spring(1),
            fill: this.props.style.fill,
            strokeWidth: this.props.style.strokeWidth,
            stroke: this.props.style.stroke,
            transformOrigin: '50% 50%'
        } : prevStyles[i - 1]
        })}>
            {interpolatedStyles =>
                <g>
                    {Object.keys(interpolatedStyles).map(key=> {
                        const {...style} = interpolatedStyles[key];
                        return (
                            <circle key={key} {...this.props} style={{
                            transform: `scale(${style.scale})`, opacity: `${style.opacity}`,
                            ...style
                            }}/>
                        )
                    })}
                </g>
            }
        </StaggeredMotion>
    )
}

我已经尝试在componentWillReceiveProps中设置状态,并验证是否收到了将this.state.ripples设置为新数组的新道具,但动画不会再次发生,它只在元素的第一次呈现时发生。

EN

回答 1

Stack Overflow用户

发布于 2016-01-06 19:08:01

问:你是如何设置状态的?

React文档上写着:Treat this.state as if it were immutable.

每次要更改状态时,都需要使用setState(),而不是直接操作this.state

从你发布的代码量来看,还不清楚你的组件到底发生了什么,但如果你没有使用setState(),那么你就会想要改变这一点。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33314293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档