Ich habe gerade angefangen habe versucht, reagieren nach ein paar Tutorials auf Redux und Reagieren und ich einen Fehler in der Konsole bekommen:Reagieren + Redux Noob - Einreichen Daten
Warnung: Stateless Funktionskomponenten kann nicht refs erhalten (Siehe ref "Benutzername" in FieldGroup von Login erstellt). Versuche, auf diese Referenz zuzugreifen, werden fehlschlagen.
Was ist der richtige Weg, Formularfeldeingabewerte an meine Übergabeschaltfläche zu übergeben? Sollen diese Werte in den Redux-Shop gehen? Nach dem Lesen der Dokumente: https://reactjs.org/docs/refs-and-the-dom.html#a-complete-example scheint es, dass ich Refs in diesem Fall vermeiden sollte. Also, ohne Referenzen, wie bekomme ich die Eingabewerte auf den Submit-Button? Danke für jede Hilfe.
Login.jsx
import React, {Component, PropTypes} from 'react';
import {Row, Col, FormControl, FormGroup, ControlLabel, HelpBlock, Checkbox, Button} from 'react-bootstrap';
export default class Login extends Component {
render() {
const { errorMessage } = this.props;
function FieldGroup({ id, label, help, ...props }) {
return (
<FormGroup controlId={id}>
<ControlLabel>{label}</ControlLabel>
<FormControl {...props} />
{help && <HelpBlock>{help}</HelpBlock>}
</FormGroup>
);
}
const formInstance = (
<Col xs={12} md={8} mdOffset={2}>
<code><{'Col xs={12} md={8}'} /></code>
<form>
<FieldGroup
id="formControlsEmail"
type="email"
label="Email address"
placeholder="Enter email"
ref="username"
/>
<FieldGroup
id="formControlsPassword"
label="Password"
type="password"
ref="password"
/>
<Checkbox checked readOnly>
Checkbox
</Checkbox>
<Button type="submit" onClick={(event) => this.handleClick(event)}>
Submit
</Button>
{errorMessage &&
<p>{errorMessage}</p>
}
</form>
</Col>
);
return formInstance;
}
handleClick(event) {
const username = this.refs.username
const password = this.refs.password
const creds = { username: username.value.trim(), password: password.value.trim() }
this.props.onLoginClick(creds)
}
}
Login.propTypes = {
onLoginClick: PropTypes.func.isRequired,
errorMessage: PropTypes.string
}