2015-06-08 5 views
9

Я получаю динамическое содержимое html из моего рендеринга шаблона, которое было визуализировано другими компонентами реакции. Как бы преобразовать эту строку html в компонент React, чтобы я мог использовать компонент в моей функции рендеринга. Обратите внимание, что я хочу сохранить конкретные атрибуты, используемые для различения.динамическая HTML-строка для взаимодействия компонента

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 
 
    } 
 
});

Я попытался преобразовать HTMLString в объект HTMLDocument и рекурсивно создания React.createElement в willmount обратного вызова и настройки реакции компонента. однако, ошибка типа toUpperCase не определена.

ответ

6

Потому что вы храните свой компонент как строку, поэтому вам нужно использовать dangerouslySetInnerHTML. Это мое предложение. Надеюсь, у кого-то будет лучший ответ. :)

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

Только что отредактировал этот вопрос. Поскольку я хочу сохранить конкретные атрибуты, я не буду использовать опасно SetInnerHtml. Есть ли программный способ создания реагирующих компонентов из строки HTML – BharaniK

6

Несколько часов назад я опубликовал html-to-react модуль в НОМ (https://www.npmjs.com/package/html-to-react), которые могут помочь вам.

Пожалуйста, дайте мне знать, если что-то вам нужно, я, безусловно, могу работать с вами, чтобы сделать модуль более гибким.

+0

Как использовать htm-to-response в проекте Asp.Net MVC? Посмотрел через Интернет, но не мог найти простой ответ на него. –

+0

Вам, скорее всего, придется настроить ReactJS.net на использование webpack, что является королевской болью. См. Https://reactjs.net/guides/webpack.html. После попытки этого подхода и успеха (после нескольких дней работы) у меня был проект Asp.Net MVC, измененный для использования RESTful API и портированный интерфейс создать-реагировать-приложение –

Смежные вопросы