2017-07-28 47 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