Hi Aaron,

I took this idea from yogthos blog and the whole session namespace contains an 
freactive atom plus some helpers:

(ns de.sveri.dockerui.session
  (:refer-clojure :exclude [get])
  (:require [freactive.core :refer [atom]]))

(def state (atom {}))

(defn get [k & [default]]
  (clojure.core/get @state k default))

(defn put! [k v]
  (swap! state assoc k v))

(defn update-in! [ks f & args]
  (clojure.core/swap!
    state
    #(apply (partial update-in % ks f) args)))


So I am assuming that I can nest (rx ...) calls and only the part that changes 
will get updated. Is that right?
This is basically what I am trying to achieve right now.

Best Regards,
Sven


Am Freitag, 21. November 2014 00:23:25 UTC+1 schrieb Aaron Craelius:
> It should re-render the portion of your DOM that was in an rx that got 
> invalidated. What does the implementation of sess/get look like?
> 
> 
> On Thu, Nov 20, 2014 at 5:21 PM, Sven Richter <[email protected]> wrote:
> 
> Hi, 
> 
> I have been playing around and like it so far.
> 
> I experience some behavior here where I wonder if it is intended or if I am 
> doing something wrong.
> 
> I have a main-page which I mount like this:
> (dom/mount! root (main-page))
> 
> and which looks like this:
> (defn main-page []
> [...
> [:div#content
>     [(rx ((sess/get :current-page)))]]...
> it loads the current page into the content div, this works.
> 
> Now I have one page which looks like this:
> (defn sub-page []
>   [:div 
> ; ... some forms
>    [(rx (di-table))]])
> 
> (defn di-table []
>   [:table
>    [:tbody
>     (for [di (sess/get :dis)]
>       [:tr [:td (:name di)]
>        [:td (:host di)]
>        [:td (str (:port di))]
>        [:td [:button {:id (:id di) :on-click #(delete-docker-instance (:id 
> di))} "Delete"]]])]])
> 
> It works as it rerenders when I change the state, however, it rerenders the 
> whole page and not only the table, which I wouldn't expect. Is it possible to 
> only rerender the table? I am using 0.1.0
> 
> Best Regards,
> Sven
> 
> Am Montag, 17. November 2014 03:20:40 UTC+1 schrieb Aaron:
> 
> 
> 
> 
> 
> 
> freactive (pronounced "f reactive" for functional reactive) is a new high 
> performance, pure Clojurescript, declarative DOM library: 
> https://github.com/aaronc/freactive
> 
> It has a syntax very similar to that of Reagent and was in fact inspired by 
> Reagent, Om, and others.
> 
> I came up with it when I was doing some DOM programming after having spending 
> a fair amount of time working with JavaFX (see my soon to be announced 
> library fx-clj: https://github.com/aaronc/fx-clj). I thought Om and Reagent 
> were very nice to work with (and actually inspired some what I did with 
> fx-clj), but I felt from my desktop GUI experience, that I could take things 
> a few steps further.
> 
> freactive's main advantages over existing solutions are probably built-in 
> animations support and slightly higher performance.
> 
> Here are it's goals from the README:
> Provide a simple, intuitive API that should be almost obvious to those 
> familiar with Clojure (inspiration from reagent)Allow for high-performance 
> rendering good enough for animated graphics based on a purely declarative 
> syntaxAllow for reactive binding of any attribute, style property or child 
> node
> Allow for coordinated management of state via cursors (inspiration from 
> om)Provide deeply-integrated animation supportAllow for cursors based on 
> paths as well as lenses
> Provide a generic items view component for efficient viewing of large data 
> sets
> Minimize unnecessary triggering of update eventsCoordinate all updates via 
> requestAnimationFrame wherever possibleBe easy to debug
> Be written in pure Clojurescript
> Provide support for older browsers via polyfills (not yet implemented)
> Any feedback is welcome!!
> I'm not sure I like the name "freactive" - but it was the best I could think 
> of at the time. Suggestions for alternative names are welcome.
> 
> 
> 
> 
> 
> 
> -- 
> 
> Note that posts from new members are moderated - please be patient with your 
> first post.
> 
> --- 
> 
> 
> 
> You received this message because you are subscribed to a topic in the Google 
> Groups "ClojureScript" group.
> 
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/clojurescript/99myJ9vLeKQ/unsubscribe.
> 
> To unsubscribe from this group and all its topics, send an email to 
> [email protected].
> 
> To post to this group, send email to [email protected].
> 
> Visit this group at http://groups.google.com/group/clojurescript.

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to