2017-07-28 3 views
5

Ich wollte Null auf der Wurzel rendern, so kann ich eine vollständige Struktur, die null rendert, aber nur die Vorteile der Komponente (+ seine lifecyle Methoden) Struktur von React.Rendering root wie Null (Rendering im DOMless-Bereich)

Hier sind einige Informationen über "Null-Konzept zurück": https://github.com/joshwcomeau/return-null - eine Beleuchtung von react conf.

Ich mache eine Elektronen-App. Im Hauptbereich gibt es keine Dom. In diesem Hauptbereich (index.js) habe ich meinen redux-Speicher, ich gebe null im gesamten Baum zurück, einschließlich der Wurzel. Allerdings kann ich nicht von Anfang an es machen, weil für die anfängliche render ich verpflichtet bin, ReactDOM.render wie folgt zu verwenden:

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

ich keinen DOM habe, ist es trotzdem, es zu machen?

Wenn ich null als root versuche ich Fehler:

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

Gibt es eine Möglichkeit, einen voll null Baum zu machen, so ist kein DOM erforderlich?

+2

Dies ist interessant und auch seltsam. Höheres Abstraktionsniveau Wie soll es funktionieren? Render Zeug in React ** DOM **, wenn eigentlich ... nichts gerendert werden muss. :)) –

+1

Danke @Kinduser für den Kommentar! :) Es ist so nützlich, ich konnte dies in Browsererweiterungen ziehen, weil sogar der Haupteintrag/"background" index.js ein DOM hat, also würde ich ein leeres div rendern, dann wäre der Rest meiner Komponenten ' null ". Der Hintergrundbaum ist nur dazu da, auf Zustandsänderungen zu reagieren. Die 'componentDidUpdate',' componentDidMount' und 'componentWillUnmount' werden am häufigsten in' return null; 'Elementen verwendet, während die' render' Methode überhaupt nicht verwendet wird. – Noitidart

+1

Würde dir gerne helfen, aber ich kann nicht :(Vielleicht solltest du nach Hinweisen auf React's GitHub usw. suchen :) –

Antwort

0
  1. Elektron haben DOM.
  2. Wenn Sie kein DOM haben, bedeutet das, dass Sie es nicht rendern können. Wie rendest du DOM an Ort und Stelle, wo es nicht existiert?
  3. Überprüfen Sie p1, Sie haben DOM in Elektronen App, und nach einigen Konfigurationen ist es völlig gleich mit der Website-Entwicklung, scheint, als ob Sie etwas falsch machen.
  4. Sie können keinen Baum haben. Ja, Sie können null in jedes andere Tag setzen, aber null selbst kann keine Kinder haben.

So.

Wenn Sie null in #root rendern, wird es als leeres Tag angezeigt, aber innerhalb davon ist es nicht möglich.

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

Danke Maksym, Ich habe versucht, in der Electron-Hintergrundseite zu rendern, wo es kein DOM gibt.React Native hat auch kein DOM, also ist es interessant, wie sie es machen, ich wünschte, es wäre besser bekannt/dokumentiert, wie man zu DOM-less bootet. – Noitidart