aufgerufen Ich habe BaseComponent, von dem alle anderen Komponenten erben. Wenn die untergeordnete Komponente jedoch componentDidMount()
hat, wird die componentDidMount()
des übergeordneten Elements nicht aufgerufen. Gibt es eine Möglichkeit, componentDidMount()
der Elternkomponente immer nach componentDidMount()
der Kindkomponente aufzurufen? Hier ist example.componentDidMount() des übergeordneten Elements wird nicht
Antwort
Sie können die "super()" -Funktion verwenden, um die Eltern-Implementierung aufzurufen.
componentDidMount() {
console.log('Child mounted.');
super();
}
Aber dies wird als anti-Muster angesehen. Der vorgeschlagene Ansatz wäre die Zusammensetzung (Details here). Leider, ohne zu wissen, was Sie durch Vererbung erreichen wollen, können wir Ihnen keine Alternative durch Komposition nennen. Bei der Verwendung von Ihrem Beispiel kann es so etwas wie diese
class Animal extends React.Component {
constructor(props) {
super(props);
}
componentDidMount() {
console.log('Parent mounted.'); // Not working.
}
render() {
return (<div>{this.props.animalType}</div>);
}
}
class Dog extends React.Component {
componentDidMount() {
console.log('Child mounted.');
}
render() {
return (<Animal animalType="Dog" />);
}
}
React.render(<Dog />, document.body);
Danke, aber in 'componentDidMount()' von Kind rufe ich 'super.componentDidMount()' stattdessen 'super()', weil 'super()' nur von 'Konstruktor' aufgerufen werden kann. – Vesmy
In Ihrem Beispiel geschehen, Ihre Stammkomponente Animal
ist nicht eigentlich die Eltern, sondern ist eine unabhängige Komponente, da sowieso rendern Sie die Dog
Komponente.
Dies ist der Grund, dass die componentDidMount
von Animal
Komponente ist in der Tat nicht immer genannt die Animal component
selbst nicht, das aufbereitet wird, sondern nur definiert.
Damit Dog
ein Kind Animal
Komponente sein, machen sie von der Mutterkomponente (Animal
) und ändern Sie den Code wie
class Animal extends React.Component {
constructor(props) {
super(props);
}
componentDidMount() {
console.log('Parent mounted.'); // Not working.
}
render() {
return (
<Dog/>
)
}
}
class Dog extends Animal {
componentDidMount() {
console.log('Child mounted.');
}
render() {
return <div>Dog.</div>;
}
}
React.render(<Animal />, document.body);
- 1. Jquery change css des übergeordneten Elements
- 2. Verschachtelte Funktion Skews Rückgabetyp des übergeordneten Elements
- 3. Auswählen des übergeordneten Elements mit css
- 4. Umschaltklasse des übergeordneten Elements onclick ohne jQuery
- 5. Abrufen der Funktion des übergeordneten Elements vom übergeordneten Element
- 6. Die CSS-Anzeigeeigenschaft des übergeordneten Elements überschreiben
- 7. jQuery beeinflusst Klassen außerhalb des übergeordneten Elements
- 8. bootstrap. div 100% Höhe des übergeordneten Elements
- 9. Möglich, Höhe automatisch Kind div? (nicht 100% des übergeordneten Elements)
- 10. Wann wird `componentDidMount` ausgelöst?
- 11. kann die Größe des untergeordneten Elements nicht auf die gesamte Breite des übergeordneten Elements ändern
- 12. Jquery: Auf SlideToggle Text des übergeordneten Elements ändern?
- 13. Wie Block Attribut des übergeordneten Elements aus untergeordneten Element
- 14. Polymer - innerHTML - kann ich Stile des übergeordneten Elements anwenden?
- 15. Doziert fork() den gesamten Speicher des übergeordneten Elements?
- 16. Abrufen von Daten des untergeordneten Elements von seinem übergeordneten Gegenstück
- 17. Inline-Blockelementhöhe zum Füllen des übergeordneten Elements erhalten
- 18. Überschreiben Sie den Z-Index des übergeordneten Elements?
- 19. Pseudo-Element mit :: vor dem Überlauf Element des übergeordneten Elements
- 20. Erhält ReflectionClass :: getProperties() auch Eigenschaften des übergeordneten Elements?
- 21. Auswählen eines Elements innerhalb eines übergeordneten Elements eines anderen
- 22. Prevent „title“ Attribut des übergeordneten Elements verursacht einen Browser Flyover
- 23. Klasse des übergeordneten Elements mit ng-click umschalten?
- 24. Abstand des Elements relativ zu seinem übergeordneten Element
- 25. JQuery - Abrufen des übergeordneten Elements aus einem verschachtelten Element ID
- 26. Abrufen von Daten vom Header zur Ansicht des übergeordneten Elements
- 27. Wann beeinflusst das untergeordnete Element die Position des übergeordneten Elements?
- 28. So erweitern Sie Listenelemente auf die Breite des übergeordneten Elements
- 29. Nummer des aktuellen Elements im übergeordneten Array-Objekt abrufen
- 30. So überschreiben Sie Xsd-Element innerhalb des übergeordneten/erweiterten Elements
Warum Sie componentDidMount anrufen möchten von Elternteil? Können Sie den Anwendungsfall erklären? –
[Facebook rät davon ab, die Vererbung mit react-Komponenten zu verwenden] (https://facebook.github.io/react/docs/composition-vs-inheritance.html#so-what-about-inheritance). – trixn