まず、このhttps://github.com/taylorSando/om-material-uiは最新の React/Material UI では動作しません。主な理由は、コンソールの次の警告だと思います。
Warning: Something is calling a React component directly. Use a factory or JSX instead. See: https://fb.me/react-legacyfactory
また、「手動で」コンポーネントを作成しようとしました:
(ns om-test.core
(:require [om.core :as om :include-macros true]
[om-tools.dom :as dom :include-macros true]
[om-tools.core :refer-macros [defcomponent]]
[om-material-ui.core :as mui :include-macros true]))
(enable-console-print!)
(defonce app-state (atom {:text "Hello Chestnut!"}))
(defn main []
(om/root
(fn [app owner]
(reify
om/IRender
(render [_]
(dom/div (dom/element js/MaterialUI.Paper {} "Hello")
(mui/paper {} "Hello"))
)))
app-state
{:target (. js/document (getElementById "app"))}))
したがって、これらのアプローチは両方とも上記の同じ警告を生成します。
Reactには明らかにいくつかの変更がありました。次のようにプログラムでコンポーネントを作成することをお勧めします。
var React = require('react');
var MyComponent = React.createFactory(require('MyComponent'));
function render() {
return MyComponent({ foo: 'bar' });
}
では、Om レンダリング関数内でマテリアル UI コンポーネントを作成するにはどうすればよいですか? 一般的に、Om レンダリング関数内で React コンポーネントを作成するにはどうすればよいでしょうか?
マテリアル UI とは、これを意味します https://github.com/calleall/material-ui
私の依存関係
:dependencies [[org.clojure/clojure "1.6.0"]
[org.clojure/clojurescript "0.0-3058" :scope "provided"]
[ring "1.3.2"]
[ring/ring-defaults "0.1.4"]
[compojure "1.3.2"]
[enlive "1.1.6"]
[org.omcljs/om "0.9.0"]
[environ "1.0.0"]
[http-kit "2.1.19"]
[prismatic/om-tools "0.3.11"]
[om-material-ui "0.1.1" :exclusions [org.clojure/clojurescript
org.clojure/clojure]]]