Sie können immer funktionale Komponente verwenden s, wenn die Komponente besteht nur aus der render Funktion.
Das heißt, wenn Ihre Komponente die folgende Form besitzt:
class MyComponent extends React.Component {
render() {
... do something ...
}
}
dann können Sie es ersetzen mit
const MyComponent = (props, context) => {
... do something ...
}
Funktionskomponenten nicht state
haben können (sie staatenlos sind) und Sie können die nicht zugreifen Komponentenlebenszyklus (z. B. componentDidMount
). Sie können auch kein reines Rendering mit ihnen verwenden, da Sie shouldComponentUpdate
nicht überschreiben können.
Sie sind die reinste Form einer Komponente, sie konvertieren Eigenschaften in UI und haben keine anderen Nebenwirkungen.
Ich würde empfehlen, sie so viel wie möglich zu verwenden, weil sie einen guten Programmierstil erzwingen (besonders mit Redux-Architektur), aber Sie werden nicht in der Lage sein, sie jedes Mal zu verwenden. Je "intelligenter" eine Komponente ist, desto weniger wird es möglich sein, eine funktionale Komponente zu verwenden (siehe Smart vs Dumb components).
Sie sind besonders nützlich, wenn Sie Higher Order Components definieren.
Beachten Sie auch, dass Sie oft alle Ansätze kombinieren, betrachten
render() {
const renderContents =() => {
return (
<div className="contents">
this.props.children
</div>
);
}
return (
<div>
{renderContents}
</div>
);
}
Sie können render
eine „Komponente“ in andere Komponente definieren. Wie Sie sehen können, gibt es keinen Unterschied zwischen einer Funktion und einer funktionalen Komponente. Gleiches gilt für Konstanten. Die Definition einer Konstanten <div />
unterscheidet sich nicht von der Definition einer konstanten Zeichenkette oder einer Zahl. Sie müssen es nicht in eine Komponente/Funktion einbinden. Sie können auch Folgendes tun:
const contents = (() => {
if (props.children.count === 0) {
return null;
}
return (
<div>{props.children}</div>
);
})();
Dies ist eine sofort aufgerufene Funktion.
Und acforfing zu mir habe ich auch gesagt, Konstante für statischen Inhalt zu verwenden –
Ich las falsch, meine Entschuldigungen. – Sulthan