我正在寻找一种设计试剂组件的方法,该组件列出按其实际(计算的)宽度排序的单词,这些单词在浏览器中呈现时将具有的宽度。(不是字符数)。
html元素的实际宽度可以通过JavaScript方法确定offsetWidth
。但是,看起来为了获得结果,必须将元素附加到DOM中的某个位置。
因此,可以通过以下方法强制解决此问题:
反应/试剂方法是什么?
一种方法是使用:ref
功能
(defn sorted-by-width []
(let [ss (reagent/atom {"the" nil
"quick" nil
"brown" nil
"fox" nil})]
(fn a-sorted-by-width []
[:ul
(for [[s width] (sort-by val @ss)]
^{:key s}
[:li
[:span
{:ref (fn text-ref [elem]
(when elem
(swap! ss assoc s (.-width (.getBoundingClientRect elem)))))
:visibility (if width "visible" "hidden")}
s]])])))
ref函数可以记录有关元素的信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句