reactjs - React-pixi 和 Reagent 导致不变违规

标签 reactjs clojurescript pixi.js reagent

我正在尝试使用 Reagent 和 React-Pixi 在 Clojurescript 中构建游戏,但只要我尝试做任何事情,我就会得到:

Error: Invariant Violation: PIXIStage.render() A valid ReactComponent must be returned. You may have returned undefined, an array or some other invalid object.

重现这个的最小情况是:

(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"]

附加信息

我已经在调试器中四处追踪,并且在 React.createElement("canvas") 生成的 canvas 上抛出不变违规在 ReactPIXI's render() method ,显然正在创建的 Canvas 不是有效的 ReactComponent。我真的不知道从这里到哪里去。

最佳答案

原来这里的问题归结为版本不兼容。我以为我在 Reagent 0.6 上运行并使用最新的 React,但应用程序似乎没有得到正确更新并且仍在使用 0.5.1,它使用与 react-pixi 不兼容的 React 版本。为了修复它,我不得不强制更新,此时它开始工作。在重现此问题时,我还遇到了浏览器缓存问题。

总而言之,值得尝试的事情包括:

$ lein clean
# edit the dependency information
$ lein figwheel
  • 清除缓存
  • 降级然后升级版本(也许?)

作为旁注,我被调试时发现的其他错误消息组合误入歧途,其中一些警告页面上运行多个 React 版本的可能性。因为我没有得到其中之一,所以我过早地排除了这种可能性。

关于reactjs - React-pixi 和 Reagent 导致不变违规,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38810624/

相关文章:

filter - 如何增加片段着色器中像素之间的空间?

reactjs - 将焦点设置在功能组件中的特定按钮上的 react 方式?

reactjs - 在 React 0.12 中动态渲染 React 组件

clojure - 需要多个 'sub-namespaces' 和 :as 的快捷方式

clojurescript - 如何减少 Clojurescript 中 ns 声明的大小?

javascript - 色度键片段着色器找不到颜色

reactjs - Eslint 错误导致 create-react-app 编译失败

reactjs - React App 刷新后返回错误

error-handling - Clojurescript/试剂处理错误

PIXI.js - png 图像资源未加载为图像/纹理、MIME 类型集,但没有扩展名