Async на стороне клиента рендеринга компонентов React с использованием шаблонов Dust JS

У меня есть помощник пыли под названием {@component id="compId" путь = "путь / к / реагировать / компонент"}.

О компоненте React. Компонент реагирует на ajax в componentWillMount и вызывает forceUpdate. psueodcode:

React.createClass(){
   getInitialState : function() {
       this.setState({response : "nothing"});
   }
   var response = "nothing";
   componenetWillMount : function(){
        //1.performs ajax call
        //2.set state in ajax callback this.setState({response : "success"});
        //3. calls this.forceUpdate() 
   },
   
   render : function() {
      //returns response text
   }

}

О компоненте Dust Helper добавляется в пылесос, а чанк записывается с ответом реакции.

dust.helpers.component = function(chunk, context, bodies, param) {
    
  return chunk.map(function(chunk) {
      var domElement = document.getElementById(param.id);
      if (!domElement) {
        console.log("Document does not present for " + param.id);
        domElement = document.createElement(param.id);
      }
    require([param.path], function(widgetModule) {
        console.log("Rendering " + param.path);
        var widget = React.createFactory(widgetModule);
        React.render(widget(null), domElement, function() {
          chunk.end(domElement.innerHTML);
        });
      });
    });
  };

Ответ в браузере:

Я могу видеть ответ как "ничего" вместо "успеха". Проблема в том, что обратный вызов render вызывается после того, как шаблон отображается в браузере, поэтому ответ ajax не обновляется.

Как бы вы запылились, слушая изменения в div после рендеринга страницы? Возможно ли это в пыли, подобно тому, как реагирует, находит diff между dom и виртуальным dom и решает перерисовать. Я использую реагирование 0.13.3 и пыль 2.7.1

0 ответов

Другие вопросы по тегам