Как добавить заполнитель в компонент MUI Select, созданный TextField?

Я хочу добавить заполнитель (-- Select --) к следующему компоненту MUI Select, созданному TextField с помощью select prop.

const [country, setCountry] = useState("")

<TextField
    select
    value = {country}
    onChange = {e => setCountry(e.target.value)}
>
    <MenuItem value='US'>America</MenuItem>
    <MenuItem value='CA'>Canada</MenuItem>
    <MenuItem value='UK'>England</MenuItem>
</TextField>

Я попытался добавить реквизит placeholder='-- Select --', но заполнитель не отображается.

Потом я попробовал добавить label='-- Select --' реквизит. Хотя заполнитель может отображаться, когда компонент изначально визуализировался и я пытался выбрать параметр, метка переместилась в верхний левый угол компонента, мне не нужна такая анимация. Затем я попытался добавить InputLabelProps = {{disableAnimation: true}} реквизит, но анимация все равно существовала.

Может ли кто-нибудь научить меня, как добавить заполнитель в моем случае?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
286
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если мы проверим элемент Select, внутри span будет пустой div с классом .MuiSelect-select, который виден, когда значение не выбрано.

Мы можем создать обходное решение, используя это span, вот так:

const [country, setCountry] = useState('');

return (
    <TextField
      sx = {{
        width: '300px',
        '& .MuiSelect-select span::before': {
          content: "'-- Select --'",
        },
      }}
      select
      value = {country}
      onChange = {(e) => setCountry(e.target.value)}
    >
      <MenuItem value = "US">America</MenuItem>
      <MenuItem value = "CA">Canada</MenuItem>
      <MenuItem value = "UK">England</MenuItem>
    </TextField>
);

Вы можете взглянуть на этот StackBlitz, чтобы увидеть живой рабочий пример этого обходного решения.

Большое спасибо за ваше решение. Я поиграл в ваш StackBlitz и обнаружил, что компонент работает только в том случае, если для содержимого установлено значение «'-- Select --'» или «»-- Select --»', он не работает, если для содержимого установлено значение '-- Выберите --' или "-- Выберите --". Почему это? @Ахмет Эмре Килинч

190303458 26.05.2024 09:27

Свойство содержимого css требует, чтобы строки были заключены в кавычки, а свойство MUI sx является объектом, поэтому мы должны заключить строку в другую кавычку, чтобы обеспечить правильный анализ строки. Этот ТАК ответ подробно объясняет это требование. Кстати, не могли бы вы принять мой ответ, если он решит вашу проблему?

Ahmet Emre Kilinc 26.05.2024 09:58

Конечно, большое спасибо за помощь. Я хочу задать дополнительный вопрос. Если я хочу реализовать интернационализацию на своей веб-странице, я попытался использовать контент: 't("select")', где t происходит из const {t} = useTranslation, и "select": "-- Select --" был определен в файле конфигурации i18n. Однако заполнитель не может быть отображен. Могу ли я узнать, в чем проблема? @Ахмет Эмре Килинч

190303458 27.05.2024 17:16

Спасибо. Я разветвил и обновил stackblitz и добавил пример поддержки i18next. Вы можете взглянуть на это.

Ahmet Emre Kilinc 27.05.2024 18:08

Большое спасибо за ваше решение, вы очень помогли. В настоящее время я создаю форму, используя React-Hook-Form, но сталкиваюсь с большими трудностями при использовании библиотеки при реализации моих пользовательских функций формы. Не могли бы вы помочь проверить мой еще один вопрос, размещенный по следующей ссылке? @Ахмет Эмре Килинч stackoverflow.com/questions/78503414/…

190303458 28.05.2024 20:27

Другие вопросы по теме