Ich frage mich, ob es möglich ist, React zu verwenden, um Logik zu machen und Daten an eine JavaScript-Funktion zu senden, ohne HTML zu rendern. Die Komponente, an die ich denke, ist etwas, dem Sie einige Daten übergeben, und es sendet Daten an eine JavaScript-Funktion außerhalb von reagieren. Ich weiß, dass das gemacht werden kann, und ich habe diesen Teil selbst gemacht, aber ich bin mir nicht sicher, wie Sie das tun würden, ohne HTML zu rendern, wie es erforderlich ist. Ist das überhaupt ein praktischer Anwendungsfall?Kann React ohne HTML-Rendering verwendet werden?
Antwort
Ab Reagieren> = 16.2 ist es möglich, jede dieser Versionen zu verwenden:
render() {
return false;
}
render() {
return null;
}
render() {
return [];
}
render() {
return <></>;
}
Rückkehr undefined
funktioniert nicht.
Die Komponente Ich denke an etwas, das Sie einige Daten, passieren und es wird Daten zurück in eine Javascript-Funktion reagieren außerhalb senden.
Warum möchten Sie eine Komponente dafür erstellen? Die meiste Zeit kann eine normale js-Funktion in einer vorhandenen Komponente ausreichen.
Ein Anwendungsfall ist z. B. ein Nebeneffekt, wenn die Komponente montiert ist, und reißen Sie sie ab, wenn sie aushängen. Zum Beispiel, wenn Sie eine ReactNative Mobile App mit Hochformat haben, können Sie sich eine <Landscape/>
Komponente vorstellen, die nach dem Mounten die App temporär im Querformat anzeigen lässt, und wenn sie nicht angehängt ist, wird die Ausrichtung auf App Standard zurückgesetzt. Sie können diese Orientierungsänderung für eine vorhandene Komponente sicher verwalten, aber das Erstellen einer dedizierten Komponente ist möglicherweise praktischer und wiederverwendbar.
Beachten Sie, dass React auch auf der Serverseite ausgeführt werden kann, also denke ich, dass es möglich ist, es so zu verwenden, dass es keine DOM-Modifikationen (aber vielleicht nur die virtuelle DOM-Berechnung) enthält.
Nein, 'render()' Methode kann nicht ein leeres Array oder etwas anderes als andere React-Komponente zurückgeben. – andreypopp
Es kann 'null' oder' false' zurückgeben, wie in der Dokumentation beschrieben http://facebook.github.io/react/docs/component-specs.html#render – benno
danke @benno, ich denke, es hat vorher nicht funktioniert vielleicht ist es neu –
Nur um Bennos Kommentare zu klären. Die ReactComponent.render method doc Staaten:
Sie können auch
null
oderfalse
zurückkehren, um anzuzeigen, dass Sie nichts tun wollen gemacht. Hinter den Kulissen rendert React einen<noscript>
-Tag, um mit unserem aktuellen Diffing-Algorithmus zu arbeiten. Wennnull
oderfalse
zurückgegeben wird, gibtthis.getDOMNode()
null
zurück.
Es ist möglich. react-router ist ein Beispiel für eine Bibliothek mit Komponenten, die kein HTML darstellen. Siehe https://github.com/rackt/react-router
Dies ist die Strecke Komponente reagieren-Fouter mit einem Render-Methode false zurückgibt:
const Route = React.createClass({
statics: {
createRouteFromReactElement
},
propTypes: {
path: string,
component,
components,
getComponent: func,
getComponents: func
},
/* istanbul ignore next: sanity check */
render() {
invariant(
false,
'<Route> elements are for router configuration only and should not be rendered'
)
}
})
Ja es sehr viel möglich ist und sehr nützlich, bei verzögertes Laden Komponenten.
Betrachten Sie dieses Beispiel mit React-Router.
import React from 'react'
import { Route, Link } from 'react-router-dom'
function asyncComponent(getComponent) {
return class AsyncComponent extends React.Component {
static Component = null;
state = { Component: AsyncComponent.Component };
componentWillMount() {
if (!this.state.Component) {
getComponent().then(Component => {
AsyncComponent.Component = Component
this.setState({ Component })
})
}
}
render() {
const { Component } = this.state
if (Component) {
return <Component {...this.props} />
}
return null
}
}
}
const Page1 = asyncComponent(() =>
System.import('./Page1.js').then(module => module.default)
)
const Page2 = asyncComponent(() =>
System.import('./Page2.js').then(module => module.default)
)
const Page3 = asyncComponent(() =>
System.import('./Page3.js').then(module => module.default)
)
const ParentComponent =() => (
<div>
<ul>
<li>
<Link to="/page1">Page1</Link>
</li>
<li>
<Link to="/page2">Page2</Link>
</li>
<li>
<Link to="/page3">Page3</Link>
</li>
</ul>
<div>
<Route path="/page1" component={Page1}/>
<Route path="/page2" component={Page2}/>
<Route path="/page3" component={Page3}/>
</div>
</div>
)
- 1. Kann Pyplot ohne DISPLAY verwendet werden?
- 2. Kann OAuth 2.0 ohne Umleitungsserver verwendet werden?
- 3. Kann dcast ohne eine Aggregatfunktion verwendet werden?
- 4. Kann Laravel 5 ohne Fassaden verwendet werden?
- 5. Kann FlashMessenger ohne Umleitung verwendet werden?
- 6. Kann Querydsl ohne generierte Abfragetypen verwendet werden?
- 7. Kann jQuery .remove() ohne Klickfunktion verwendet werden?
- 8. React Native: Kann keine Methode von 'routeMapper' verwendet werden?
- 9. Kann Golang Mobile mit React-Native verwendet werden?
- 10. Responsivevoice.js kann offline verwendet werden?
- 11. React.findDOMNode-Funktion kann nicht verwendet werden
- 12. MapController kann nicht ohne App-Absturz verwendet werden
- 13. Kann VS2010 auf einer VS2008-Lösung ohne Upgrade verwendet werden?
- 14. Kann std :: string ohne #include <string> verwendet werden?
- 15. Kann Caffe Only ohne Klassifizierung für die Klassifizierung verwendet werden?
- 16. Kann Sockets in Python ohne Internetzugang verwendet werden
- 17. git-stash kann nicht ohne einen funktionierenden Baumfehler verwendet werden
- 18. Git-Pull kann nicht ohne eine funktionierende Baum verwendet werden
- 19. Kann reactive-native mit Java und Tomcat ohne Knoten verwendet werden?
- 20. Wie werden semantische UI-Module in React verwendet?
- 21. React/Babel/Webpack kann nicht eingerichtet werden
- 22. React native: Externe Pakete können nicht importiert und verwendet werden
- 23. Sie benötigen keinen Status in React-Komponenten, wenn Redux und React-Redux verwendet werden?
- 24. Kann HttpClient gleichzeitig verwendet werden?
- 25. BitScanForward64 kann nicht verwendet werden
- 26. Kann ExecuteReader() zweimal verwendet werden?
- 27. Kann JSONP sicher verwendet werden?
- 28. kann nicht verwendet werden ScalaTest
- 29. ADLivelyTableView kann nicht verwendet werden
- 30. Ruby kann nicht verwendet werden
React ist eine Bibliothek zum Erstellen von Ansichten. Welche Funktionen von React führen dazu, dass Sie es für Ihre Aufgabe verwenden möchten? –