8.6 KiB
Changelog
0.7.0 (27.6.2017)
- Fixed a warning with recent ClojureScript (1.9.660+) versions about
a variadic method signature in
reagent/impl/util.cljs
.reagent.core/partial
andwrap
used a bad deftype which worked previously by luck. (#303)
- React updated to 15.5.4 (#292)
- Uses create-react-class instead of
deprecated
React.createClass
- Reagent has dependency on
cljsjs/create-react-class
, if you are using other methods to provide React, you need to exclude this dependency and provide it yourself.
- Uses create-react-class instead of
deprecated
- Self-host compatibility (#283)
- Removed deprecated
reagent.interop/.'
andreagent.interop/.!
macros
- Removed deprecated
- Improve assert messages all around
0.6.2 (19.5.2017)
- React updated to 15.4.2
- Fixes a problem with
number
inputs, (#289, facebook/react#8717)
- Fixes a problem with
0.6.1 (10.3.2017)
- Fix :ref on inputs (#259)
- React updated to 15.4.0 (#275, #276)
- BREAKING:
reagent.core
no longer providesrender-to-string
orrender-to-static-markup
functionsreagent.dom.server
includes the same functions- This is due to change in React packaging, including React-dom-server would increase the file size considerably, so now it is only included when
reagent.dom.server
is used
0.6.0
-
React updated to 15.2.1
-
Fix input on-change events in IE11
0.6.0-rc
-
React updated to 15.1.0
-
Symbols and keywords are now allowed in Hiccup content. They are converted using
name
. -
Any object hat satisfies IPrintWithWriter is also allowed, and is converted using
pr-str
. -
Bug fixes, improved error handling/reporting, and lots of testing.
0.6.0-alpha
Breaking changes
-
Reagent now depends on
cljsjs/react-dom
andcljsjs/react-dom-server
, rather than oncljsjs/react
directly. -
Reactions are now asynchronous, just like Reagent components.
flush
forces outstanding reactions to run. -
Reactions now only trigger updates of dependent components if their value change, as reported by
=
(previously,identical?
was used). -
The macros
.'
and.!
inreagent.interop
have been renamed to$
and$!
respectively.
News
-
React updated to 0.14.3
-
Added
reagent.dom
andreagent.dom.server
namespaces, corresponding to new React packages. -
create-class
now returns a normal React class, that can be used directly from javascript. -
Add
track
: turns a function call into a reactive value. -
Add
track!
: eager version oftrack
. -
Add
dispose!
: stop the derefable returned bytrack!
from updating. -
Add
with-let
macro: simpler handling of lifecycle in components and reactions. -
Add
rswap!
: works likeswap!
, except that recursive calls are allowed, and they always return nil. -
cursor
now shares state between all instances corresponding to a given set of parameters. -
next-tick
now evokes its argument function at a clearly defined time (immediately before rendering, which is in turn triggered using requestAnimationFrame). -
after-update
is a new function, similar tonext-tick
, except that the function is evoked immediately after rendering. -
Support
[:> nativeComp {:foo "bar"}]
-
Reagent now falls back to using
require
if globalReact
is undefined, to simplify use with e.g webpack and node.js.
0.5.1
-
React updated to 0.13.3
-
Deprecate calling the result of
create-class
as a function (i.e always use hiccup forms to call Reagent components). -
Hiccup syntax has been extended to allow nested elements to be defined using '>' as part of the keyword name.
-
Add
force-update
for completeness. -
Try harder to maintain cursor position in inputs.
-
Simplify examples, taking advantage of new figwheel.
-
Better warnings and error messages.
0.5.0
-
React updated to 0.12.2
-
Reagent no longer bundles React. Instead it uses cljsjs/react as a dependency. This means that you should no longer specify React in
:preamble
in your project.clj. -
ClojureScript 0.0-2816 or later is required.
-
adapt-react-class
makes it easier to use "native" React components with Reagent. -
reactify-component
makes it easier to use Reagent components in JSX. -
cursor
is re-written, to be more efficient and flexible. -
render
now forces a deep update of all components, to make it more convenient to use with e.g. figwheel. -
Renamed
as-component
toas-element
, to match React's new terminology better (old name still works, though, for backward compatiblity). -
Stop wrapping native components. This reduces the number of components created a lot, and can speed up some things substantially (especially render-to-string, that is not bound by browser performance). This is made possible by a new way of keeping track of which order to re-render dirty components.
-
Added
create-element
to make it easier to embed native React components in Reagent ones. -
Arguments to components are now compared using simple
=
, instead of the old, rather complicated heuristics. NOTE: This means all arguments to a component function must be comparable with=
(which means that they cannot be for example infiniteseq
s). -
Reagent now creates all React components using
React.createElement
(required for React 0.12). -
render-component
is nowrender
, andrender-component-to-string
isrender-to-string
, in order to match React 0.12 (but the old names still work). -
Add
render-to-static-markup
. This works exactly likerender-to-string
, except that it doesn't producedata-react-id
etc. -
create-class
now takes a Reagent-style render function (i.e with the same arguments you pass to the component), called:reagent-render
.
0.4.3
-
React updated to 0.11.2
-
Add reagent.core/cursor
-
Add javascript interop macros .' and .!
-
Add force-update-all to make LightTable integration easier
-
Some performance optimizations
0.4.2
-
Allow multi-methods as component functions.
-
Tweak performance by avoiding
clojure.core/memoize
. -
Bugfix: Allow on-change handler on controlled inputs to keep value unchanged.
0.4.1
- Made Reagent compatible with ClojureScript 0.0-2173.
reagent.core/atom
now implements the necessary IAtom, ISwap and IReset protocols. Reagent should still be compatible with older ClojureScript versions, but you will get a lot of compilation warnings.
0.4.0
-
Breaking change: Component functions can get arbitrary arguments, and not just vectors and maps. This is a breaking change, but behaviour is unchanged if you pass a map as the first argument (as in all the examples in the old documentation).
-
React updated to 0.9.0.
-
You can now use any object that satisfies
ifn?
as a component function, and not just plain functions. That includes functions defined with deftype, defrecord, etc, as well as collections like maps. -
reagent.core/set-state
andreagent.core/replace-state
are now implemented using areagent.core/atom
, and are consequently async. -
Keys associated with items in a seq (e.g ”dynamic children” in React parlance) can now be specified with meta-data, as well as with a
:key
item in the first parameter as before. In other words, these two forms are now equivalent:^{:key foo} [:li bar]
and[:li {:key foo} bar]
. -
Performance has been improved. For example, there is now practically no overhead for tracking derefs in components that don’t use atoms. Allocations and memory use have also been reduced.
-
Intro and examples have been tweaked a little to take advantage of the new calling conventions.
0.3.0
-
Changes in application state are now rendered asynchronously, using requestAnimationFrame.
-
Reagent now does proper batching of updates corresponding to changed atoms, i.e parents are rendered before children, and children are only re-rendered once.
-
Add
reagent.core/flush
to render changes immediately. -
Bugfix: Allow dynamic id with hiccup-style class names.
0.2.1
- Bugfix: allow data-* and aria-* attributes to be passed through unchanged.
0.2.0
- Rename Cloact to Reagent, due to popular disgust with the old name...