2016-04-07 26 views
6

Tôi muốn hiển thị các thành phần phản ứng bằng một chuỗi làm đầu vào mà tôi đang nhận động từ một trang khác. BUt i sẽ có các tham chiếu cho các thành phần phản ứng. Dưới đây là ví dụHiển thị chuỗi là thành phần React

Page1: 
----------------------------- 
loadPage('<div><Header value=signin></Header></div>'); 

Page2: 
-------------------------------- 
var React =require('react'); 
var Header = require('./header'); 

var home = React.createClass({ 

loadPage:function(str){ 

      this.setState({ 
      content : str 
      }); 

    }, 

render : function(){ 

    return {this.state.content} 
} 

}); 

Trong ví dụ này tôi đang nhận phần header như chuỗi, và tôi có tài liệu tham khảo của phần Header trong trang tiếp nhận tôi. Làm thế nào tôi có thể thay thế chuỗi bằng thành phần phản ứng thực tế

+0

Trường hợp sử dụng của bạn chính xác là gì? Mẫu bạn cung cấp rất không phổ biến và tôi không nghĩ bạn có thể chuyển đổi chuỗi thành các thành phần. Tại sao bạn không sử dụng một số chuỗi id như arg trong hàm loadPage() của bạn, sau đó render các thành phần (thực) tương ứng trong phương thức render của bạn? –

+0

Trình chỉnh sửa trang của nó, bất kỳ đánh dấu nào đã được lưu vào tệp phải được trả lại vào trình chỉnh sửa trang – jazean

+1

Sau đó, bạn nên lưu trữ cấu trúc json phản chiếu cây của thành phần hơn là đánh dấu. Nếu bạn xem xét cách khai báo thành phần React trông như thế nào nếu không có jsx, bạn sẽ thấy làm thế nào để tuần tự hóa nó. Ví dụ '

' nằm trong vùng phủ sóng: 'React.createElement (Tiêu đề, {key: value}, React.createElement (OtherComponent, null))' – VonD

Trả lời

3

Để hiển thị thành phần phản ứng bằng chuỗi bạn có thể sử dụng.

var MyComponent = Components[type + "Component"]; 
return <MyComponent />; 

Để biết thêm thông tin kiểm tra phản ứng ở đây: React/JSX Dynamic Component Name

0

Nếu bạn có thể sống với việc có tất cả các thành phần của bạn trong một mô-đun, sau đó này hoạt động khá tốt:

import * as widgets from 'widgets'; 
    var Type = widgets[this.props.componentId]; 
    ... 
    <Type /> 

Việc nhập khẩu wildcard hoạt động giống như đăng ký thành phần mức độ cắt.

3

Thành phần react-jsx-parser này có vẻ như sẽ giải quyết được sự cố của bạn

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