add support for useLayoutEffect (#232)

This commit is contained in:
Nick Pellegrino
2021-02-26 07:00:26 -05:00
committed by GitHub
parent e6d40ec7da
commit 0febaf2e10
2 changed files with 19 additions and 0 deletions

View File

@ -383,6 +383,10 @@
([setup-fn])
([setup-fn deps]))
(defn use-layout-effect!
([setup-fn])
([setup-fn deps]))
(defn use-callback
([callback] callback)
([callback deps] callback))

View File

@ -541,6 +541,21 @@
(->> (if (array? deps) deps (into-array deps))
(.useEffect js/React #(or (setup-fn) js/undefined)))))
(defn use-layout-effect!
"(rum/use-layout-effect!
(fn []
(.addEventListener js/window \"load\" handler)
#(.removeEventListener js/window \"load\" handler))
[]) ;; empty deps collection instructs React to run setup-fn only once on initial render
;; and cleanup-fn only once before unmounting
Read more at https://reactjs.org/docs/hooks-effect.html"
([setup-fn]
(.useLayoutEffect js/React #(or (setup-fn) js/undefined)))
([setup-fn deps]
(->> (if (array? deps) deps (into-array deps))
(.useLayoutEffect js/React #(or (setup-fn) js/undefined)))))
(defn use-callback
"Takes callback function and returns memoized variant, memoization is done based on provided deps collection.