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