        to "[:code "app-state"]". "[:code "log-app-state"]" would
        continue to run until you stop it, using "[:code "(r/dispose!
        logger)"]"."]
+
 
        [:h2 "with-let: Handling destruction"]
 

         [:li [:code "next-tick"]" is now guaranteed to execute its
         argument before the next render (more on that below.)"]]]

       [:h2 "track: Use any function as a reactive value"]

       [:p [:code "reagent.core/track"] " takes a function, and

        will only result in one call to the " [:code "people"] "
        function (both initially, and when the state atom changes)."]]

       [:p "If you've been using "[:code "reagent.ratom/reaction"]"
       etc, "[:code "track"]" should be quite familiar. The main
       difference is that "[:code "track"]" uses named functions and
       variables, rather than depending on closures, and that you
       don’t have to manage their creation manually (since tracks are
       automatically cached and reused)."]

       [:p [:b "Note: "] "The first argument to "[:code "track"]"
       should be a named function, i.e not an anonymous one. Also,
       beware of lazy data sequences: don’t use deref (i.e ”@”) with
       the "[:code "for"]" macro, unless wrapped
       in "[:code "doall"]" (just like in Reagent components). "]


       [:h2 "track!"]

       [:p [:code "track!"]" is another new function. It works just
