2015-02-27 26 views
9

Tôi có một số giao diện người dùng bên ngoài với trừu tượng các thành phần phản ứng và tôi muốn sử dụng lại chúng từ thuốc thử, có cách nào trực tiếp hiển thị thành phần phản ứng được xác định trước chỉ bằng cách truyền dữ liệu từ clojurescript. Tôi là một người mới bắt đầu sử dụng clojurescript.sử dụng thành phần phản ứng trước từ thuốc thử?

Trả lời

16

Hãy thử! Chúng ta có thể bắt đầu bằng cách viết thành phần trong một tệp js.

var CommentBox = React.createClass({displayName: 'CommentBox', 
    render: function() { 
    return (
     React.createElement('div', {className: "commentBox"}, 
          this.props.comment 
    ) 
    ); 
    } 
}); 

Sau đó, chúng ta có thể gọi nó là trực tiếp từ thuốc thử:

(defonce app-state 
    (atom {:text "Hello world!" 
     :plain {:comment "and I can take props from the atom"}})) 

(defn comment-box [] 
    js/CommentBox) 

(defn hello-world [] 
    [:div 
    [:h1 (:text @app-state)] 
    [comment-box #js {:comment "I'm a plain React component"}] 
    [comment-box (clj->js (:plain @app-state))]]) 

(reagent/render-component [hello-world] 
          (. js/document (getElementById "app"))) 

Chú ý rằng chúng ta đang đi qua các đạo cụ để các CommentBox cả như js đồng bằng đối tượng bằng cách sử dụng #js và bằng cách chuyển đổi các nguyên tử để js đồng bằng clj->js . Trong trường hợp tôi bị mất một cái gì đó, bạn có thể tìm thấy phần còn lại trong gist.

+0

Chỉ cần thêm vào đây, có thêm một chút thông tin về phía dưới cùng của trang này: https://reagent-project.github.io/news/news050.html – Dan

Các vấn đề liên quan