我正在尝试使用Reagent和React-Pixi在Clojurescript中构建一个游戏,但是当我尝试做任何事情时我都会:
错误:不变违规:PIXIStage.render()必须返回有效的ReactComponent。您可能已经返回了undefined,数组或其他一些无效对象。
重现这一点的最小情况是:
(ns react-sprites.core
(:require [cljsjs.react-pixi]
[reagent.core :as r]))
(def stage (r/adapt-react-class js/ReactPIXI.Stage))
(defn root [] [stage {:width 300 :height 300}])
(r/render-component [root]
(. js/document (getElementById "app")))
具体而言,使用react-pixi
和reagent
版本:
[reagent "0.6.0-rc"]
[cljsjs/react-pixi "0.8.1-0"]
我已经离开并在调试器中进行了跟踪,并且canvas
正在由React.createElement("canvas")
ReactComponent
生成SELECT TOP 1 *
FROM Events e
INNER JOIN Tickets t
ON e.event_id = t.event_id
ORDER BY t.ticket_id
,因此显然正在创建画布不是有效的transition: 2s ease;
。我真的不知道从哪里开始。
答案 0 :(得分:0)
事实证明,问题归结为版本不兼容。我以为我在Reagent 0.6上运行并使用最新的React,但似乎该应用程序没有得到适当的更新,并且仍在使用0.5.1,它使用的React版本与react-pixi&不兼容#39; S。要修复它,我不得不强制更新,此时它开始工作。在重现此问题时,我也遇到了浏览器缓存问题。
总之,值得尝试的事情包括:
$ lein clean
# edit the dependency information
$ lein figwheel
作为旁注,我在调试时发现的其他错误消息的组合使我误入歧途,其中一些警告可能在页面上运行了多个React版本。由于我没有得到其中之一,我过早地排除了这种可能性。
答案 1 :(得分:0)
有一个名为 puck 的库,它是一个围绕 PixiJS 的 ClojureScript 包装器。这可能是在构建游戏中应用 ClojureScript 的另一种途径。