Skip to content

Latest commit

 

History

History
49 lines (36 loc) · 1.48 KB

README.md

File metadata and controls

49 lines (36 loc) · 1.48 KB

cljs-react-reload

Write reloadable Reactjs classes in ClojureScript

This library was created to answer the question how do I maintain local state for React components that I am reloading live. This library will be very helpful for folks who use Figwheel and write React.js classes.

To understand what it does it is probably best to read it

@dan_abramov's React hotloader prompted me to write this.

Usage

Clojars Project

Require the cljs-react-reload.core macros

(ns example.core
  (:require-macros
   [cljs-react-reload.core :refer [defonce-react-class def-react-class]))]

Then use the defonce-react-class to define a React class that gets patched on reload.

(defonce-react-class Counter
  #js {:getInitialState (fn [] #js {:count 0})
       :render
       (fn []
         (this-as this
           (sablono.core/html
             [:div [:h1 (str "Count")]
                [:button
                  {:onClick
                    #(.setState
                      this
                      #js{ :count (inc (.. this -state -count))})} "inc"]])))})

Now you can work on the various React lifecycle hooks and see that their behavior changes while the local state of the component doesn't.

The def-react-class is provided so that you can easiliy redefine the React class.