               (when-let [f (aget (.-props this) "onWillMount")]
                 (binding [*component* this]
                   (f)))))
+          :componentWillUpdate
+          (fn [_ _]
+            (this-as this
+              (when-let [f (aget (.-props this) "onWillUpdate")]
+                (binding [*component* this]
+                  (f)))))
           :componentWillUnmount
           (fn []
             (this-as this
               (when-let [f (aget (.-props this) "onWillUnmount")]
                 (binding [*component* this]
                   (f)))))}))
+
+
 
 (defn on-update
   "Wrap a component, specifying a function to be called on the

  The function will be passed the rendered DOM node."
  [child f]
  (WrapperComponent #js {:wrappee child
                         :onUpdate f
                         :onMount f}))

(defn on-will-mount
  "Wrap a component, specifying a function to be called on the

  (WrapperComponent #js {:wrappee child
                         :onWillMount f}))

(defn on-will-update
  "Wrap a component, specifying a function to be called on the
  componentWillUpdate lifecycle event.

  The function will be called with no arguments."
  [child f]
  (WrapperComponent #js {:wrappee child
                         :onWillUpdate f}))

(defn on-will-render
  "Wrap a component, specifying a function to be called on the
  componentWillMount AND the componentWillUpdate lifecycle events.

  The function will be called with no arguments."
  [child f]
  (WrapperComponent #js {:wrappee child
                         :onWillMount f
                         :onWillUpdate f}))


(defn on-will-unmount
  "Wrap a component, specifying a function to be called on the
  componentWillUnmount lifecycle event.
