OM - AJAX 전화 후에 데이터가 업데이트되지 않음
-
21-12-2019 - |
문제
나는 다음과 같은 코드를 가지고 있으며, 나는 근본적으로 잘못된 것을하고 있다고 생각합니다.
(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!
를 사용해야합니다.
제휴하지 않습니다 StackOverflow