    :componentDidUpdate
    (fn [prev-props prev-state] (this-as this
      (let [prev-state (get-show-data prev-state)
-           prev-props (get-show-data prev-props)]
+           prev-props (props-with-defaults this (get-show-data prev-props))]
        (execute-mixin-methods this :did-update prev-props prev-state)
        (execute-local-method  this :did-update prev-props prev-state))))
 


   :componentWillReceiveProps
   (fn [next-props] (this-as this
     (let [next-props (get-show-data next-props)]
       (execute-mixin-methods this :will-receive-props next-props)
       (execute-local-method  this :will-receive-props next-props))))

   :shouldComponentUpdate
   (fn [next-props next-state] (this-as this
     (let [next-props (get-show-data next-props)
           next-state (get-show-data next-state)
           ;; Need to explicitly check for the method since a nil return is
           ;; acceptable from should-update

(defn get-node
  [component] (.getDOMNode component))

(defn- props-with-defaults [component props]
  (merge (.. component -__show_default_props) props))

(defn get-props
  "Returns the value of the components inherited nested associative structure.
  ks is an optional property that gives quick access to a get-in call"
  ([component] (props-with-defaults component (aget (.-props component) "__show")))
  ([component ks]
   (let [ks (if (sequential? ks) ks [ks])]
     (get-in (get-props component) ks))))
