This should make initial rendering a bit faster, as well as cases
where many components change simultaneously.
It should also lead to slightly less memory use.
The drawback is that native components no longer use
shouldComponentUpdate, and so requires more conversion from cljs
to js values – but this is now quite fast anyway.
Tests and doc site can now run without node, using only
"lein figwheel". Tests and site are then re-run automatically
whenever a source file changes.
The doc site is now generated into "outsite/public", and can be
copied into the "gh-pages" branch with "make build-gh-pages".
"make push-gh-pages" builds the doc site and pushes it upstream
to the gh-pages branch there.
Generation of html pages is now handled completely in
ClojureScript, loaded from "bin/gen-site.js".
Link handling is a bit simplified.
It now avoids unnecessary re-renderings, by comparing equality
with all its arguments, and by using a Reaction to filter out
only the changes that affects its value.
This also adds an optional setter callback, that is called instead
updating the parent atom directly.
This makes most comparisons faster, and should result in fewer
re-renderings. And it should be a lot easier to explain and
reason about than the old heuristics.
It also makes it much easier to make custom objects, e.g. different
cursor implementations, avoid unnecessary re-renderings.
The main downside is that it is no longer possible to pass infinite
sequences to components.
The new names correspond to changes in React in 0.12.0.
Both render-component and render-component-to-string are kept for
backward compatibility.
Call React.render etc to avoid deprecation warnings from React.