Guest User

Untitled

a guest
Feb 18th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.70 KB | None | 0 0
  1. (defn form [init-state spec]
  2. {:will-mount
  3. (fn [state]
  4. (let [local-state (atom init-state)
  5. validate #(let [v @local-state
  6. valid? (s/valid? spec v)]
  7. {:valid? valid?
  8. :errors (when-not valid? (s/explain-data spec v))})
  9. validation (atom (validate))
  10. component (:rum/react-component state)]
  11. (add-watch local-state spec
  12. (fn [_ _ ost nst]
  13. (when (not= ost nst)
  14. (reset! validation (validate)))
  15. (rum/request-render component)))
  16. (assoc state
  17. :form/state local-state
  18. :form/validation validation)))})
Add Comment
Please, Sign In to add comment