У меня есть компонент презентации, который использует функцию из своего контейнерного компонента в качестве опоры. Я хочу вернуть ref
в качестве аргумента с функцией обратно в компонент контейнера. Но он возвращается как undefined
.React: отправить ref обратно в компонент контейнера?
(То, что я хочу добиться того, чтобы отправить адрес электронной почты, пользователь вставить в форму в компоненте представления, обратно к компоненту контейнера, так что я могу обработать его там.)
Любое предложение о том, как сделать эта работа?
компонент Контейнер
class EmailInputContainer extends Component {
addEmailToList(childComponent){
console.log(childComponent.refs)
}
render(){
return(
<EmailInputView addEmailToList={this.addEmailToList}/>
)
}
}
Презентация компонента
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>
)
Ницца, спасибо. Зачем вызывать функцию для каждого нажатия клавиши ('onChange'), а не только' onSubmit'? Как прослушать кнопку отправки в этом решении? И как я могу предотвратитьDefault (я не повезло 'event.preventDefault()')? – allegutta
im не уверен, какие данные вы получите onSubmit, но из-за этого было бы лучше использовать это, потому что вам это понадобится, чтобы знать, когда форма была отправлена, и вы не обрабатываете строки, содержащие половину электронной почты все время. попробуйте. – Aligertor
Я был просто доверен на передачу обработчика вместо ref - потому что это важный момент, чтобы получить imho – Aligertor