如何在componentWillReceiveProps上运行Lottie动画?

时间:2017-08-19 12:20:58

标签: javascript react-native jsx expo lottie

我希望在我的组件收到更新的道具时运行动画。

示例代码:

import React from 'react';
import Animation from 'lottie-react-native';

export default class BasicExample extends React.Component {
  componentDidMount() {
// This works
if(this.props.displayAnimation)
    this.animation.play();
  }

  componentWillReceiveProps(nextProps) {
      console.log("Component will receive new prop")
      if(nextProps.displayAnimation){
         this.animation.play();
      }
   }

  render() {
    return (
      <Animation
        ref={animation => { this.animation = animation; }}
        style={{
          width: 200,
          height: 200,
        }}
        source={require('../path/to/animation.json')}
      />
    );
  }
}

因此this.animation.play();上的componentWillReceiveProps无效。基于我阅读的几个文件,我意识到这可能不是正确的方法,因为this上的componentWillReceivePropsthis上的componentDidMount不同

我尝试传递状态以强制更新组件,但React不会更新动画组件。

有关如何在componentWillReceiveProps

上播放动画的建议

1 个答案:

答案 0 :(得分:2)

请改为componentDidUpdate