tweak: utilise use-layout-effect to safely update atom

This commit is contained in:
Sean Hagstrom 2024-04-01 18:28:50 +01:00
parent e6623ef370
commit c777771524
No known key found for this signature in database
GPG Key ID: 5257FEDF56307320
1 changed files with 9 additions and 3 deletions

View File

@ -92,12 +92,18 @@
(defn make-snapshot-handler-factory [snapshot] (defn make-snapshot-handler-factory [snapshot]
(let [storage (rn/use-memo #(atom {}) []) (let [storage (rn/use-memo #(atom {}) [])
capture (rn/use-memo #(atom snapshot) []) capture (rn/use-memo #(atom snapshot) [])
_update (rn/use-layout-effect
(fn []
(swap! capture (fn [_] snapshot)))
snapshot)
factory (rn/use-memo factory (rn/use-memo
(do (swap! capture (fn [_] snapshot)) (fn []
#(memo storage (fn [handler]
((memo storage
(fn [callback] (fn [callback]
(fn [event] (fn [event]
(callback @capture event))))) (callback @capture event))))
handler)))
[storage capture])] [storage capture])]
{:factory factory {:factory factory
:storage storage})) :storage storage}))