문제

나는 다음과 같은 코드를 가지고 있으며, 나는 근본적으로 잘못된 것을하고 있다고 생각합니다.

(defn world-view [data owner opts]
  (reify
    om/IInitState
      (init-state [_]
        (om/update! data #(assoc % :world vec)))
    om/IWillMount
      (will-mount [_]
        (go (let [world (<! (get-world (:dimensions opts)))]
              (log (get-in world [9 9]))
              (om/update! data #(assoc % :world world)))))
    om/IRender
      (render [this]
        (log (get :world data))
        (apply dom/table nil
          (om/build-all row (:world data))))))
.

다음과 같이 om/IWillMount에서 원격 Ajax 호출을 만들고 있습니다.

om/IWillMount
  (will-mount [_]
    (go (let [world (<! (get-world (:dimensions opts)))]
          (log (get-in world [9 9]))
          (om/update! data #(assoc % :world world)))))
.

나는 원격 통화에서 2D 벡터를 되돌릴 것으로 기대하고,

와 함께 배열의 요소를 기록 할 수 있기 때문에이 작업을 수행하고 있습니다.
(log (get-in world [9 9]))
.

i om/update를 사용하여 데이터 구조를 업데이트합니다.

그러나 렌더링이 호출되면 데이터가 업데이트되지 않는 것으로 보이지 않으며 데이터 구조를 기록하려고 시도하여 데이터를 테스트 할 수 있습니다

log (get :world data))
.

이것은 아무것도 기록하지 않습니다.

나는 무엇을 잘못하고 있는지 또는 데이터 구조가 업데이트되지 않은 이유를 알 수 없습니다.

도움이 되었습니까?

해결책

om/update! 커서를 주어진 값으로 설정하므로 기본적으로커서에 함수를 할당합니다. om/transact! 를 사용해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top