Je crée un formulaire de réaction avec material-ui.
Je voudrais que le formulaire soit une vue fixe à 2 colonnes et non un flux basé sur la taille du navigateur, donc c'est toujours comme ça:
import React from "react"; import PropTypes from "prop-types"; import { withStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; const styles = theme => ({ textField: { marginLeft: theme.spacing.unit, marginRight: theme.spacing.unit } }); class TextFields extends React.Component { state = { firstName: "", lastName: "", street: "", city: "" }; handleChange = name => event => { this.setState({ [name]: event.target.value }); }; render() { const { classes } = this.props; return ( <form className={classes.container} noValidate autoComplete="off"> <TextField id="first-name" label="First Name" className={classes.textField} value={this.state.firstName} onChange={this.handleChange("firstName")} margin="normal" /> <TextField id="last-name" label="Last Name" className={classes.textField} value={this.state.lastName} onChange={this.handleChange("lastName")} margin="normal" /> <TextField id="address-street" label="Street Address" className={classes.textField} value={this.state.street} onChange={this.handleChange("street")} margin="normal" /> <TextField id="address-city" label="City" className={classes.textField} value={this.state.city} onChange={this.handleChange("city")} margin="normal" /> </form> ); } } TextFields.propTypes = { classes: PropTypes.object.isRequired }; export default withStyles(styles)(TextFields);
Et pas finir comme
|First Name |Last Name| Street Address |City |
https://codesandbox.io/s/0q7kw76nyl
|First Name |Last Name| |Street Address |City |
3 Réponses :
Essayez de séparer les deux groupes en divs comme ceci:
https://codesandbox.io/s/ vy6k6w1jq3
<div> <TextField/> <TextField/> </div> <div> <TextField/> <TextField/> </div>
Cela semble plus propre et plus simple et fonctionne dans le bac à sable, mais étrangement, pour une raison quelconque, ne reste pas le même dans la page plus compliquée (ils deviennent des groupes verticaux au lieu d'horizontales!). Je vais donc devoir utiliser Grids.
@opticyclic oui j'espérais que la solution la plus simple suffirait. Grid / Flexbox ferait l'affaire
Comme ci-dessus, la mise en divs fonctionne très bien.
Vous pouvez également les placer dans une disposition Grille pour une personnalisation supplémentaire.
La disposition en grille a quelques détails supplémentaires tels que l'espacement et la justification des éléments, largeur des éléments personnalisable, voici la documentation .
import Grid from '@material-ui/core/Grid' <Grid container> <Grid item xs={6}> ... </Grid> <Grid item xs={6}> ... </Grid> </Grid>
Vous pouvez utiliser le conteneur Grid et l'élément en même temps.
<Grid container spacing={2} > <Grid container item xs={6} direction="column" > <TextField /> <TextField /> <TextField /> </Grid> <Grid container item xs={6} direction="column" > <TextField /> <TextField /> </Grid> </Grid>