2015-04-06 90 views
3

基本上我想使標題元素插入這樣是否有可能通過文檔片段渲染組件?

<head> 
    <HeadFragment /> 
</head> 

這是唯一可能在通過實際渲染的成分瞬間head元素,但如果您使用外部這會導致各種問題腳本注入到頭部。

我基本上要

var HeadFragment = React.createClass({ 
    render: function() { 
     return (<fragment> 
      <title>{this.props.title}</title> 
      ... meta ... 
      ... styles ... 
      ... scripts ... 
     </fragment>) 
    } 
}); 

React.render(<HeadFragment />, document.querySelector('head')); 

但片段節點不應該是一個實際的DOM節點,而是將是一個文檔片段。

沒有這個支持,它使得整個頁面的渲染幾乎不可能,並且迫使我們做一堆其他的東西來修改這樣的東西而不破壞HTML規範。

+0

您是否嘗試過使用實際文檔片段作爲'render'目標? https://developer.mozilla.org/en-US/docs/Web/API/Document/createDocumentFragment – WiredPrairie 2015-04-06 10:37:56

+0

,這是行不通的,但即使它仍然不得不渲染與包裝節點組件,然後追加到一個破壞目的的片段。 – 2015-04-09 10:36:41

+0

我不清楚你想要解決什麼問題......是否使用虛擬DOM渲染頭部?如你所見,這絕對不是React的甜蜜點。 – WiredPrairie 2015-04-09 11:17:25

回答

2

修改整個html容器,head等文檔片段是完全不可靠的。過去有很多關於這個的喋喋不休,如:https://groups.google.com/forum/#!topic/reactjs/4jI5xe7TXzQ和GH等。

有像https://github.com/matthewwithanm/react-frozenhead這樣的項目嘗試根據您提供的內容進行正確的更新,如使用document.setTitle等更改標題,但是。

+0

與您發佈的FrozenHead解決方案是否也適用於元,樣式,腳本...然後只重新標題標題? – 2015-04-06 21:29:40