2015-04-06 59 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