2017-07-28 67 views
5

我想在根上渲染null,所以我可以有一个渲染为null的完整树,但只是利用React的组件(+它的生命周期方法)结构。将根渲染为null(在DOMless范围内渲染)

以下是关于“返回null概念”的一些信息:https://github.com/joshwcomeau/return-null - 来自react conf的灯光讲话。

我正在制作一个电子应用程序。在主要范围内,没有dom。在这个主要范围(index.js)中,我有我的redux存储,我在整个树中返回null,包括根。但是我最初不能使其因为最初的渲染我需要使用ReactDOM.render这样的:

ReactDOM.render(<AllNullStuff />, document.getElementById('something')) 

我没有DOM,反正是有渲染呢?

如果我尝试null为根,我得到错误:

Error: _registerComponent(...): Target container is not a DOM element.

有没有什么办法来呈现一个完全null树,因此无需DOM?

+2

这很有趣也很奇怪。更高层次的抽象。它应该如何工作?渲染React ** DOM **内的东西,实际上......没有东西需要渲染。 :)) –

+1

感谢@Kinduser的评论! :)这是非常有用的,我能够在浏览器扩展中关闭它,因为即使主/入口“背景”index.js有一个DOM,所以我会渲染一个空的div,然后我的其余组件是' null'。背景树只是在那里响应状态的变化。 'componentDidUpdate','componentDidMount'和'componentWillUnmount'是'return null;'元素中使用最多的,而'render'方法则根本不被使用。 – Noitidart

+1

很想帮助你,但我不能:(可能你应该在React的github等上寻找一些提示:) –

回答

0
  1. 电子有DOM。
  2. 如果您没有DOM,那意味着无法呈现它。如何在不存在的地方呈现DOM?
  3. 检查p1,你在电子应用程序中有DOM,经过一些配置后,它完全等同于网站开发,看起来像你做错了什么。
  4. 你不能有树。是的,您可以将null放入任何其他标签,但null本身不能包含儿童。

像这样。

如果您在#root中呈现null,它将显示为空标记,但在其内部是不可能的。

render() { 
    return null; //how to put child tags in it? No way... 
} 
+0

感谢Maksym,我试图在没有DOM的电子背景页面中呈现。React Native也没有DOM,因此有趣的是他们是如何做的,我希望它能够更好地知道/记录如何引导到无DOM。 – Noitidart