¿Cómo alinear los campos de texto de Material ui en React?

Estoy desarrollando un React js aplicación Material ui components.

Soy una columna 2 grid, cada columna tiene 4 textField.

Algunos de esos textField están teñidos Autocomplete componente.

El problema es que no tienen los mismos estilos por lo tanto no están alineados frente a los demás.

Aquí hay una imagen del resultado

enter image description here

Como usted puede notar el problema en la segunda y tercera fila de la columna izquierda.

Aquí está mi código.


   
        setValues({ ...values, nameError: false })}
        onChange={(e) => setValues({ ...values, name: e.target.value })}
        error={values.nameError}
        helperText={values.nameError ? t("Obligatoire") : ""}
        margin="normal"
        fullWidth
        type="text"
        value={values.name}
        label={t("nomFR") + " *"}
        autoComplete="given-name"
      />
      //Same for the rest  
   
   
      
        
           option.label}
            renderOption={(option, { selected }) => (
              
{option.label}
)} value={values.espace} disableClearable renderInput={(params) => ( setValues({ ...values, espaceError: false }) } style={{ marginLeft: 3, marginRight: 3 }} margin="normal" value={""} label={t("Espace") + " *"} /> )} /> {values.espaceError && ( {t("Obligatoire")} )}
//Same for the rest

Observe, no voy a dar ningún margen o relleno.

¿Hay una solución, por favor? Estoy atrapado aquí por 2 días.

Pregunta hecha hace 3 años, 5 meses, 0 días - Por compilerhero


2 Respuestas:

  • Para alinear los campos de texto de Material UI en React, puedes utilizar el sistema de grid de Material UI para establecer una estructura uniforme para tus elementos. A continuación te muestro un ejemplo de cómo podrías reestructurar tu código para lograr una alineación adecuada:

    jsx
    import { Grid, TextField } from '@material-ui/core';
    
    const YourComponent = () => {
      return (
        
          
            
            {/ Agrega los demás TextField /}
          
          
            
              {/ Agrega las opciones del select /}
            
            {/ Agrega los demás componentes de input con Autocomplete /}
          
        
      );
    }
    
    export default YourComponent;
    

    En este ejemplo, se utilizan los componentes Grid y TextField de Material UI para estructurar y alinear los campos de texto de manera uniforme dentro de un sistema de cuadrícula. Asegúrate de ajustar los atributos y estilos según tus necesidades específicas. ¡Espero que esto te ayude a resolver tu problema de alineación!

    Respondida el Dec 18, 2020 a las 14:14 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para alinear los campos de texto de Material UI en React, puedes utilizar la propiedad inputProps del componente TextField. Esta propiedad acepta un objeto que puede incluir propiedades de estilo, como margin y padding, que se aplicarán a la entrada de texto subyacente.

    Aquí tienes un ejemplo modificado de tu código que utiliza la propiedad inputProps para alinear los campos de texto:

    jsx
    import React, { useState } from "react";
    import { Grid, TextField, SelectInputWrapper, FormControl, Autocomplete, FormHelperText } from "@material-ui/core";
    
    const MyForm = () => {
      const [values, setValues] = useState({
        name: "",
        espace: ""
      });
    
      const handleNameChange = (e) => {
        setValues({ ...values, name: e.target.value, nameError: false });
      };
    
      const handleEspaceChange = (e, value) => {
        setValues({ ...values, espace: value, espaceError: false });
      };
    
      return (
        
          
            
            {/ Same for the rest /}
          
          
            
              
                 option.label}
                  options={spaces}
                  renderOption={(option, { selected }) => (
                    
    {option.label}
    )} value={values.espace} disableClearable renderInput={(params) => ( )} /> {values.espaceError && ( Obligatoire )}
    {/ Same for the rest /}
    ); }; export default MyForm;

    Ten en cuenta que:

    He añadido la propiedad inputProps al componente TextField en ambas columnas. He establecido los estilos marginLeft y marginRight en 3px para cada entrada de texto.

    • He eliminado los estilos de margen y relleno de los componentes `Grid` para evitar conflictos.

    Este código debería alinear todos los campos de texto en ambas columnas.

    Respondida el Dec 18, 2020 a las 14:21 - por Gemini

    Votos positivos: 0 | Votos negativos: 0