I documenti per React indicano che le funzioni del componente sono accessibili da un componente padre tramite i riferimenti. Vedere: https://facebook.github.io/react/tips/expose-component-functions.htmlReact ES6 | Come accedere alle funzioni del componente figlio tramite i riferimenti
Sto tentando di utilizzare questo nella mia applicazione, ma in esecuzione in un errore "non definito non è una funzione" quando viene chiamata la funzione figlio. Mi chiedo se questo abbia qualcosa a che fare con l'utilizzo del formato ES6 per le classi React perché non vedo altre differenze tra il mio codice e i documenti.
Ho un componente Dialog simile al seguente pseudocodice. La finestra di dialogo ha un pulsante "Salva" che chiama save(), che deve chiamare la funzione save() nel componente Contenuto figlio. Il componente Contenuto raccoglie informazioni dai campi del modulo figlio ed esegue il salvataggio.
class MyDialog extends React.Component {
save() {
this.refs.content.save(); <-- save() is undefined
}
render() {
return (
<Dialog action={this.save.bind(this)}>
<Content ref="content"/>
</Dialog>);
}
}
class Content extends React.Component {
save() {
// Get values from child fields
// and save the content
}
}
ho potuto invece passare un oggetto di scena (saveOnNextUpdate) fino al contenuto e quindi eseguire salvare ogni volta che è vero, ma io preferirei capire come ottenere il metodo descritto nel documento sopra Reagire al lavoro.
Qualche idea su come ottenere l'approccio del doc per lavorare o accedere alla funzione del componente figlio in modo diverso?
Quale versione di reagire stai usando? – Tyrsius
Il tuo pseudo esempio funziona: https://jsfiddle.net/vbj34euk/ quindi probabilmente è un altro problema. Potresti pubblicare più del codice reale? – m90
Per componente avvolto (un componente collegato a Redux o altri plug-in). dobbiamo usare getWrappedInstance() per ottenere l'istanza avvolta e quindi possiamo accedere allo stato, ai riferimenti e ai metodi di quel componente. Ecco il video che lo spiega - https://youtu.be/VpdKjocgCtA – Prem