               (this-as
                this
                (.call x this (assoc (default-arg-map this)
-                                    :prev-props (.-cljsProps prevProps)
+                                    :prev-props (.-cljs prevProps)
                                     :prev-state (.-cljs prevState)))))))
     (set! (. class-def -componentWillUnmount) (:component-will-unmount fn-map))
     (let [remaining-methods (apply dissoc fn-map react-component-api-method-keys)]

    ;; TODO: propTypes, mixins, statics
    (when-let [x (:get-default-props fn-map)]
      (set! (. class-def -getDefaultProps)
            (fn [] (this-as this #js{:cljsDefaultProps (.call x this {:this this})}))))
    (when-let [x (:display-name fn-map)] (set! (. class-def -displayName) x))
    (when-let [x (:component-will-mount fn-map)]
      (set! (. class-def -componentWillMount)



(defn- props [instance]
  (let [defaults (aget instance "props" "cljsDefault")]
    (if defaults
      (merge defaults (.. instance -props -cljs))
      (.. instance -props -cljs))))


(defn- atom-like-state-swap! [instance & swap-args]
