4 ms·
The biggest difference is that, unlike Om, Reagent does not require you to reify an interface to define a component. Instead, components are defined with functi
by astine 12y ago
The biggest difference is that, unlike Om, Reagent does not require you to reify an interface to define a component. Instead, components are defined with functions which return a hiccup-like datastructure. If you need access to React's other lifecycle methods, you can provide metadata, but in general, you don't need to bother. Personally, I find this easier to reason about.
The other major change is that state is managed through a special, customized, reactive atom. Everytime the atom is updated, any components which use it are updated. You can have as many of these atoms as you want and you can use them from as many components as you want.
- bkurtz13 12y agoTake a look at Prismatic's om-tools(1). It adds a defcomponent macro that removes a lot of boilerplate. 1)https://github.com/Prismatic/om-tools https://github.com/Prismatic/om-tools
- astine 12y agoI actually used om-tools before I switched to reagent. Om-tools does cut out a lot of boilerplate, but I like reagent's approach more from the outset. One thing I found confusing about Om with or without om-tools, was how to manage communication between the components. The tutorials used a lot of core.async to manage that but it was clearly unnecessary. In Reagent you can pass arbitrary parameters to component functions. You don't have to make each component correspond to a branch on your applications state's tree. You can, and you can use a cursor analog if you want to, but you don't have to and I found that very freeing.