我有一个名为 {@component id="compId" path="path/to/react/component"} 的灰尘助手。
关于 React 组件: react 组件在 componentWillMount 中进行 ajax 调用,并调用 forceUpdate。伪代码:
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);
});
});
});
};
浏览器中的响应:
我能够将响应视为“无”而不是“成功”。问题是在浏览器上渲染模板后调用渲染回调,因此不会更新 ajax 响应。
在页面呈现后,您将如何制作灰尘来监听 div 的更改?是否有可能在灰尘中,类似于 react 如何找到 dom 和 virtual dom 之间的差异并决定重新渲染。我正在使用反应 0.13.3 和灰尘 2.7.1