0

我有一个名为 {@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

4

0 回答 0