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

4
假设我通过某个库可以访问一个纯的React.js组件:
var MyPureJavaScriptComponent = React.createClass({
  render: function() {
    //...
  }
});

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

(defui MyComponent
  Object
  (render [this]
          (div nil "Hello, world!")))

问题:MyPureJavaScriptComponent添加到om.next,最好的方法是什么?如果能够将其包装在自己的defui调用中,那么就像每个其他om.next组件一样,这将非常好(至少从美学上来说)。这种做法可行吗(并且是否是最佳方式)?

1个回答

6

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

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

难道不应该在渲染函数之外的更好的地方创建它,例如在组件挂载时?但这种方式简单,并且得益于React不进行任何不必要的真实渲染。 - Chris Murphy
2
@ChrisMurphy 这是推荐的方式,普通的React JSX语法只是将其抽象化了,但是检查源代码,你会看到React.createElement无处不在,可以查看React主页上的这个例子(在编译后的JS选项卡中查看)https://www.dropbox.com/s/9asp89ebb201el8/Screenshot%202016-02-28%2020.47.07.png?dl=0 - Wilker Lucio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接