title: how to customise the print function for native objects in clojurescript
body: <p>I'm looking to customize how a react element is displayed, this is the code:</p>
  
  <pre><code>(require ["react" :as react])    
  
  (defn react-element? [obj]
    (if-let [sym (aget obj "$$typeof")]
      (= js/Symbol
         (type sym))))
  
  (extend-protocol IPrintWithWriter
    object
    (-pr-writer [obj writer _]
      (js/console.log "hello")
      (cond (react-element? obj)
            (write-all writer
                       (-&gt; (js-&gt;clj obj)
                           (dissoc "$$typeof")
                           str))
  
            :else
            (write-all writer (str obj)))))
  
  (react/createElement "h2" nil "Hello, World!")
  </code></pre>
  
  <p>I'm expecting the output to be</p>
  
  <pre><code>{:type "h2", :key nil, :ref nil, :props {:children "Hello, World!"}}}
  </code></pre>
  
  <p>but it still prints out the normal #js element:</p>
  
  <pre><code>#js {"$$typeof" Symbol(react.element), 
       :type "h2", :key nil, :ref nil, 
       :props #js {:children "Hello, World!"}, :_owner nil}
  </code></pre>
  
  <p>Is there a way to customize this behaviour?</p>