0
저는 시약 구성 요소를 작성하려고합니다. 시약 구성 요소는 HTML 캔버스 요소에 절대 픽셀 크기가 있어야한다는 사실을 요약합니다. 오히려 항상 최대 해상도에서 캔버스를 사용하고 싶습니다.시약 캔버스 구성 요소
[Canvas {:width "100%"
:height "100%"
:render (fn [ctx [w h]]
(.fillRect ctx 0 0 (/ w 2) (/ h 2)))}]
을 그리고 여기 내 접근 방식 :
마지막으로,이 같은 구성 요소를 사용하십시오
(defn Canvas [{:keys [width height render]}]
(let [state (r/atom {:size nil})
update-size (fn [el]
(when el
(let [size (get-real-size el)
ctx (.getContext el "2d")]
(swap! state assoc :size size)
(render ctx size))))]
(fn []
(let [{:keys [size]} @state]
[:canvas {:style {:width width :height height}
:ref update-size
:width (nth size 0)
:height (nth size 1)}]))))
반면 :
(defn get-real-size [el]
(let [bb (.getBoundingClientRect el)]
[(.-width bb) (.-height bb)]))
캔버스가 제대로 렌더링 할 것 해당 크기. 그러나 render 함수는 아무 것도 그리지 않습니다. 아무도 이것을 수정/처리하는 방법을 알고 있습니까?