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.