reactjs - Min MUI Select-komponent visar inte placeholder- eller label-egenskaper


Grundläggande vad titeln säger. Jag försöker använda Select-komponenten i min app men både placeholder="Text" och label={"Text"} props visar inte det förväntade resultatet.

När man använder placeholder renderas Select som "tom", medan label-egenskapen verkar göra något men efter att ha klickat på den blir detta resultat:

Min package.json visar

"@material-ui/core": "^5.0.0-alpha.27",
"@material-ui/icons": "^5.0.0-alpha.27",
"@material-ui/lab": "^5.0.0-alpha.27",
"@material-ui/system": "^5.0.0-alpha.27",
<Select
  label={"Text"}
  variant="outlined"
  size="small"
  fullWidth
>
  <MenuItem value={1}>Option 1</MenuItem>
  <MenuItem value={2}>Option 2</MenuItem>
</Select>

Svar #1

Du kan försöka använda alternativet 'displayEmpty' på Material Select om dina alternativ inte inkluderar ett tomt värde ''

https://v4.mui.com/api/select/

och sedan i funktionen renderValue kan du kontrollera om värdet är "", returnera platshållartexten.

Något sådant här :

      <Select
        displayEmpty
        renderValue={(value: unknown) => {
          if (!value) {
            return <Typography color="gray">your label here</Typography>;
          }
          return <>{value}</>;
        }}
      >
        <MenuItem value={10}>Ten</MenuItem>
        <MenuItem value={20}>Twenty</MenuItem>
        <MenuItem value={30}>Thirty</MenuItem>
      </Select>

Svar #2

Material UI stöder inte platshållare för <Select /> direkt, eftersom det också är etiketten: Se: här

I stället kommer du att använda <InputLabel>Text</InputLabel>


Något sådant här:

<FormControl>
    <InputLabel>Text</InputLabel>
    <Select variant="outlined" size="small" fullWidth>
    <MenuItem value={1}>Option 1</MenuItem>
    <MenuItem value={2}>Option 2</MenuItem>
    </Select>
</FormControl>

Relaterade artiklar