React-pixi和Reagent导致不变违规

时间:2016-08-07 03:31:25

标签: reactjs clojurescript pixi.js reagent

我正在尝试使用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-pixireagent版本:

[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; 。我真的不知道从哪里开始。

2 个答案:

答案 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 的另一种途径。