Explorar el Código

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

dong hace 8 años
padre
commit
002785190e
Se han modificado 1 ficheros con 9 adiciones y 6 borrados
  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);
   }