将Pure React组件与Om混合使用Next

Geo*_*rge 4 clojure clojurescript reactjs om

假设我可以通过某个库访问纯的react.js组件:

var MyPureJavaScriptComponent = React.createClass({
  render: function() {
    //...
  }
});
Run Code Online (Sandbox Code Playgroud)

但我希望使用om.next,其中React组件是通过defui宏构建的:

(defui MyComponent
  Object
  (render [this]
          (div nil "Hello, world!")))
Run Code Online (Sandbox Code Playgroud)

问题:MyPureJavaScriptComponent进入的最佳方式是什么om.next?如果它可以被包装在它自己的调用中,那将是非常好的(至少在美学上),defui因此它MyPureJavaScriptComponent与其他所有om.next组件处于同一个基础上.这是否可能(并且它是最好的方式)?

Wil*_*cio 6

您可以将任何React组件返回到Om.next树中,这是一个示例:

(defui MyComponent
  Object
  (render [this]
    (dom/div nil
      (dom/h1 nil "Hello")
      (js/React.createElement js/MyPureJavaScriptComponent #js {:prop "value"}))))
Run Code Online (Sandbox Code Playgroud)

  • @ChrisMurphy这是推荐的方法,正常的React JSX语法只是抽象出来了,但检查源代码,你会看到`React.createElement`到处都是,从React主页查看这个例子(查看Compiled JS选项卡) )https://www.dropbox.com/s/9asp89ebb201el8/Screenshot%202016-02-28%2020.47.07.png?dl=0 (2认同)