Прежде всего, этот https://github.com/taylorSando/om-material-ui не работает с последним интерфейсом React/Material. Основная причина, я думаю, это предупреждение в консоли:Как создать компонент пользовательского интерфейса в Om Clojurescript?
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' });
}
Так как создать компонент материала UI внутри Om функции визуализации, или, может быть, лучше Как создать Реагировать функцию компонента внутри Ом визуализации, в общем?
По материалу UI я имею в виду это https://github.com/callemall/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]]]