2015-06-08 19 views
9

Tôi sẽ nhận được nội dung html động từ việc hiển thị mẫu của tôi được hiển thị bởi các thành phần phản ứng khác. Làm thế nào tôi sẽ chuyển đổi chuỗi html này thành thành phần React để tôi có thể sử dụng thành phần trong hàm render của tôi. Lưu ý rằng tôi muốn giữ lại các thuộc tính cụ thể phản ứng được sử dụng để phân biệt.Chuỗi HTML động để phản ứng thành phần

React.createClass({ 
 
    var self = this; 
 

 
    componentWillMountDown : function() { 
 
    //htmlString is essentially huge dynamic one in my actual case 
 
    var htmlString = "<div class='classDiv' react-id="0.1"><input type='text'/></div>"; 
 
    self.setState({responseString : htmlString}); 
 
    self.forceUpdate(); 
 
    }, 
 
    
 
    render: function() { 
 
    var Response = this.state.responseString; 
 
    //how would I return the react component as response? 
 
    return (<Response/>); //does not work. err is it shd be valid react component 
 
    } 
 
});

Tôi đã thử chuyển đổi htmlString để đối tượng HTMLDocument và đệ quy tạo React.createElement trong callback willmount và thiết lập phản ứng thành phần. tuy nhiên, lỗi là loại toUpperCase không được xác định.

Trả lời

6

Vì bạn lưu trữ thành phần của mình dưới dạng chuỗi nên bạn phải sử dụng dangerouslySetInnerHTML. Đây là đề nghị của tôi. Tôi hy vọng người khác sẽ có câu trả lời tốt hơn. :)

render: function() { 
    var self = this; 
    var Response = React.createClass({ 
     render: function(){ 
     return (<div dangerouslySetInnerHTML={{__html: self.state.responseString}}></div>) 
     } 
    }); 
    return (
      <Response /> 
    ) 
    } 
+3

Chỉ cần chỉnh sửa câu hỏi. Vì tôi muốn giữ lại các thuộc tính cụ thể của phản ứng nên tôi sẽ không thể sử dụng SetInnerHtml nguy hiểm. Có cách lập trình nào để tạo thành phần phản ứng từ chuỗi HTML – BharaniK

6

Một vài giờ trước, tôi đã công bố một module html-to-react trong NPM (https://www.npmjs.com/package/html-to-react) có thể giúp bạn.

Vui lòng cho tôi biết nếu có bất cứ điều gì bạn cần, tôi chắc chắn có thể làm việc với bạn để làm cho mô-đun linh hoạt hơn.

+0

Làm cách nào để sử dụng htm-to-react trong dự án Asp.Net MVC? Nhìn qua internet nhưng không thể tìm thấy một câu trả lời đơn giản cho nó. –

+0

Bạn có thể sẽ phải cấu hình ReactJS.net để sử dụng webpack, đó là một nỗi đau của hoàng gia. Xem: https://reactjs.net/guides/webpack.html - Sau khi thử phương pháp này và thành công (sau một vài ngày làm việc), tôi đã có dự án Asp.Net MVC được sửa đổi để sử dụng RESTful API và chuyển giao front-end để tạo phản ứng-ứng dụng –

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