Просмотр исходного кода

repair problem: countdown will not change when target time update (#392)

dong 8 лет назад
Родитель
Сommit
002785190e
1 измененных файлов с 9 добавлено и 6 удалено
  1. 9 6
      src/components/CountDown/index.js

+ 9 - 6
src/components/CountDown/index.js

@@ -21,9 +21,12 @@ class CountDown extends Component {
 
   componentWillReceiveProps(nextProps) {
     if (this.props.target !== nextProps.target) {
+      clearTimeout(this.timer);
       const { lastTime } = this.initTime(nextProps);
       this.setState({
         lastTime,
+      }, () => {
+        this.tick();
       });
     }
   }
@@ -76,18 +79,18 @@ class CountDown extends Component {
         clearTimeout(this.timer);
         this.setState({
           lastTime: 0,
+        }, () => {
+          if (onEnd) {
+            onEnd();
+          }
         });
-
-        if (onEnd) {
-          onEnd();
-        }
       } else {
         lastTime -= this.interval;
         this.setState({
           lastTime,
+        }, () => {
+          this.tick();
         });
-
-        this.tick();
       }
     }, this.interval);
   }