2016-06-22 49 views
3

由於在這裏解釋太長的原因(並非非常相關),我希望能夠繞過React的渲染批處理並強制組件樹立即在某些DOM元素,即使它意味着強制佈局和應用程序的減速。如何使用React同步呈現組件(或呈現爲字符串)

我不需要任何監聽器綁定 - 我只需要測量渲染組件的尺寸,然後將其從DOM中刪除。

我能想到的是渲染到字符串,並設置容器的innerHTML唯一的解決辦法,但renderToString方法僅適用於react-dom/server並通過查看代碼中似乎它在全球範圍改變配料戰略在整個反應庫。

任何想法?

+0

'forceUpdate'? – xyc

+0

forceUpdate只強制組件在下一批中重新渲染。它仍然是異步的。 – disc0dancer

+0

'ReactDOM.render'目前確實如此。他們認爲它對未來的使用似乎是異步的。演示:https://jsfiddle.net/9e7tndf9/ –

回答

-1

我用下面(髒)方法能夠保持我的應用程序中的同步流程:

var doneRendering = false; 

ReactDOM.render(component, container, function() { 
    doneRendering = true; 
}); 

while (!doneRendering) { 
    console.log("Waiting"); 
} 

console.log(container); 

相反,你也可以使用像描述here輪詢方法,其本質上的東西取代了,而環像

var interval = setInterval(function() { 
    if (doneRendering) { 
     clearInterval(interval); 
     console.log(container); 
    } 
}, 100);