There's actually a pretty serious bug in this implementation, and I added this checkbox to show and hide our stopwatch so that we can reveal this bug. When I uncheck it, it actually removes the component from the dom. When I check it again, it'll re-add it and create a brand-new instance and re-render that.
If I go ahead and add a callback here inside of set state call and I console log this.state.laps, and then we pop open our developer console and I hit start, I'm going to see this number being incremented a millions times logged to the console.
Then if I click on show stopwatch to un-show it, we're actually going to get this warning. It actually isn't doing anything wrong in our application, but it is indicative of a memory leak. That's exactly what's happening here.
We need to fix this memory leak. The problem is that the set interval is never cleared, so we need to go ahead and clear that. Let's go ahead and do that with component will unmount. Right before React removes the component from the page, it's going to call this function.
We'll simply say clear interval this.timer. Now, we can start, and then remove the stopwatch, and it's totally gone. We don't see the logs anymore and we don't get that warning.