Ich habe eine Präsentationskomponente, die eine Funktion aus ihrer Container-Komponente als Requisite übernimmt. Ich möchte ein ref
als ein Argument mit der Funktion zurück an die Container-Komponente zurückgeben. Aber es wird als undefined
zurückgegeben.React: Senden ref zurück zur Container-Komponente?
(Was ich will, erreichen, ist die E-Mail senden die Benutzer in das Formular in der Präsentationskomponente Adresse einfügen, zurück zum Container-Komponente, damit ich es dort verarbeiten kann.)
Jeder Vorschlag, wie man machen diese Arbeit?
Container Komponente
class EmailInputContainer extends Component {
addEmailToList(childComponent){
console.log(childComponent.refs)
}
render(){
return(
<EmailInputView addEmailToList={this.addEmailToList}/>
)
}
}
Präsentation Komponente
const EmailInputView = (functions) => (
<Grid style={Styles.emailInputView.container} verticalAlign='middle'>
<Cell width='5/12' style={Styles.smallText('black', 1.1, 1.5, 'left')}>
<p>Enter your mail and we'll keep you<br />posted with news and updates!</p>
</Cell>
<Cell width='5/12' align='right'>
<form onSubmit={functions.addEmailToList(this)}>
<input style={Styles.emailInputForm.emailInput} ref='emailInput' type="text" name="email" placeholder="Your email address" />
<input style={Styles.emailInputForm.submitButton} type="submit" value="Submit" />
</form>
</Cell>
</Grid>
)
Schön, danke. Warum rufen Sie die Funktion für jeden Tastendruck auf ('onChange') und nicht nur' onSubmit'? Wie höre ich in dieser Lösung den Absenden-Button? Und wie verhindere ichDefault (ich habe 'event.preventDefault() 'ohne Glück versucht)? – allegutta
Ich bin nicht sicher, welche Daten on OnSubmit bekommen, aber aus Grund, es wäre besser, dies zu verwenden, weil Sie es sowieso wissen müssten, wenn das Formular tatsächlich eingereicht wurde und Sie keine Strings mit der halben E-Mail die ganze Zeit behandeln. Versuche es. – Aligertor
Ich war nur auf einen Handler statt einer Ref übergeben - weil das ist der wichtige Punkt, um imho – Aligertor