    :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))))
 

           local-should-update (execute-local-method this :should-update next-props next-state)
           mixin-update?       (not (empty? (local-mixins this :should-update)))
           mixin-should-update (every? identity (execute-mixin-methods this :should-update next-props next-state))]
        (cond
          (and local-update? mixin-update?)
            (and local-should-update mixin-should-update)
          mixin-update?
            mixin-should-update
          local-update?
            local-should-update
          :else
            (or (not= (get-props this) next-props)
                (not= (get-state this) next-state))))))

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


   :componentWillReceiveProps
   (fn [next-props] (this-as this
     (let [next-props (props-with-defaults this (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 (props-with-defaults this (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
