Textbereich im Material-UI

Lesezeit: 3 Minuten

Benutzeravatar von Johann Gomes
Johann Gomes

Könnte mir jemand helfen, eine TextField-Personalisierung mithilfe der Material-UI-Bibliothek in eine TextArea umzuwandeln? Ich finde keinen Parameter, der es in eine TextArea personalisieren sollte: https://github.com/callemall/material-ui/blob/v1-beta/src/TextField/TextField.d.ts

Dies ist die TextArea:https://material.io/guidelines/components/text-fields.html#text-fields-field-types (CMD/Strg + F ‘Textbereich’).

Textbereiche sind größer als Textfelder und brechen überlaufenden Text in eine neue Zeile. Sie scrollen vertikal, wenn der Cursor den unteren Rand des Felds erreicht.

Benutzeravatar von bennygenel
bennygenel

Zu machen TextField arbeiten wie ein textarea Sie können verwenden multiline Stütze. Sie können mehr darüber lesen TextFied und sein props hier.

Beispiel

<TextField
  placeholder="MultiLine with rows: 2 and rowsMax: 4"
  multiline
  rows={2}
  maxRows={4}
/>

Sie können einstellen maxRows={Infinity} wenn Sie Ihr mehrzeiliges Eingabefeld mit Ihrem Inhalt skalieren möchten (unabhängig von der Inhaltslänge).

  • @BishopZ Es ist schwer zu sagen, was das Problem ist, ohne ein reproduzierbares Minimalbeispiel.

    – bennygenel

    23. Juni 2018 um 10:09 Uhr

  • Tipp: Sie können festlegen rowsMax={Infinity} wenn Sie Ihr mehrzeiliges Eingabefeld mit Ihrem Inhalt skalieren möchten (unabhängig von der Inhaltslänge).

    – Benny Neugebauer

    11. Januar 2019 um 13:39 Uhr

  • Aber der innere Text der TextField wird grundsätzlich immer kleiner. Müssen wir es mit dem benutzerdefinierten CSS überschreiben?

    – Rehan Sattar

    17. Mai 2019 um 20:36 Uhr

  • tatsächlich heißen die Eigenschaften minRows und maxRows (nicht rowsMax und rowsMin). Ohne Angabe dieser Eigenschaften wird es standardmäßig an den Text angepasst.

    – Kullern in die Tiefe

    6. Oktober 2021 um 14:33 Uhr

  • Neuer Link zu den Dokumenten Es sollte die akzeptierte Antwort sein.

    – sr9yar

    4. November 2021 um 8:16 Uhr

Benutzeravatar von Sampath kumar
Sampath Kumar

Wir können umrissene Mehrzeilen verwenden <TextField> für Textbereich
und es könnte implementiert werden, indem ein Thema erstellt wird, das global überall im Inneren angewendet werden kann <App/>

theme.js

import { createMuiTheme} from '@material-ui/core/styles';
const theme = createMuiTheme({
 overrides: {
    MuiOutlinedInput: {
        multiline: {
            fontWeight: 'bold',
            fontSize: '20px',
            color: 'purple',
            width: '50vw'
        }
    }
}
  
});
export default theme;

app.js

...
import { ThemeProvider } from '@material-ui/core/styles';
import Theme from './relevant-path-where-the-above-theme.js-file-is-saved/Theme';
...
...
render() {
    
    return (
      <ThemeProvider theme={Theme}>
        <div className="App"> 
            <Routes/>
        </div>
      </ThemeProvider>
        
    );
  }

SomeComponent.js

...
<TextField
  id="outlined-multiline-static"
  label="Multiline"
  multiline
  rows={10}
  variant="outlined"
/>
...

Jetzt der Stil für umrissene Multilinien <TextField> wird weltweit angewendet
Geben Sie hier die Bildbeschreibung ein

Benutzeravatar von Rishav Kumar
Rishav Kumar

Du solltest benutzen TextareaAutosize API in der Material-UI verfügbar.

import TextareaAutosize from '@material-ui/core/TextareaAutosize';

oder

import { TextareaAutosize } from '@material-ui/core';

Das folgende Beispiel hat alle Attribute von TextareaAutosize:
https://material-ui.com/components/textarea-autosize/

Sie können mehr über den Unterschied zwischen den beiden Importen erfahren, indem Sie lesen diese Anleitung.

  • sieht aber überhaupt nicht nach Material aus

    – tasqyn

    16. Juni 2020 um 8:16 Uhr

  • Haben Sie eine Idee, wie Sie diese Komponente mit a InputBase um den gleichen Stil und das gleiche Thema zu haben

    – irzh

    23. Februar 2021 um 12:55 Uhr

  • Anstelle von TextareaAutosize, das wie Müll aussieht, setzen Sie diese Attribute auf ein TextField: `multiline minRows={3} maxRows={20}, zB: . multiline = textarea, maxRows = autosize bis zu so vielen Zeilen, optional minRows = zu verwendende Mindestzeilen.

    – Jake

    8. Oktober 2021 um 16:37 Uhr

Wenn Sie anstelle der gesamten Material-UI-Komponente etwas Einfaches möchten, verwenden Sie einfach diesen Code:

textarea.style.height = textarea.scrollHeight+'px'

Wo scrollHeight ist die innere Höhe des Textbereichs und style.height ist außen (wenn außen < innen, Bildlaufleiste zeigt)

1404190cookie-checkTextbereich im Material-UI

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy