Как установить атрибут заполнителя для ввода текста в React?

Я новичок в React и создаю атом текстового ввода. Я хочу иметь возможность установить заполнитель в качестве опоры. Если заполнитель пуст, я не хочу, чтобы атрибут отображался (нет смысла иметь пустой атрибут placeholder. Однако мне не удалось это понять.

Я пробовал различные методы, включая тернарный оператор как таковой:

let placeholderAttr = placeholder ? `placeholder = "${placeholder}"`: '';

return (
     <div className = {['text-field', `text-field-${size}`, statusStylesInput].join(' ')}>
        <input type = "text" {placeholderAttr}></input>
      </div>
)

Но это не работает. Я могу установить атрибут напрямую, например:

 <input type = "text" placeholder = {placeholder}></input>

Но если свойство заполнителя пусто, оно все равно отображает пустой атрибут заполнителя, например:

<input type = "text" placeholder></input>

Кто-нибудь знает, как лучше всего это сделать?

Если заполнитель пуст, какой текст вы хотите отобразить?

The KNVB 03.06.2024 08:54

Я думаю, вы могли бы сделать {...(placeholder ? { placeholder } : {}}, но кажется, что это слишком много для «решения» того, что на самом деле не является проблемой.

jonrsharpe 03.06.2024 08:59

Здесь вы вступаете в бой с React. Я бы ни в малейшей степени не беспокоился о таком пустом атрибуте. Браузер не обрабатывает атрибуты-заполнители, placeholder и placeholder = "" одинаково, это не атрибут checked или что-то в этом роде.

Lynden Noye 03.06.2024 09:03

Если возможные значения не определены, нулевые, «» и т. д., я бы использовал const finalPlaceholder = useMemo(()=>(!placeholder?undefined:placeholder,[placeholder‌​]). Затем FinalPlaceholder можно присвоить свойству заполнителя. Если он заполнен реальным текстом, вы увидите его, в противном случае «неопределенное» будет связано с заполнителем, в результате чего свойство не будет отображаться.

JWittmeyer 03.06.2024 13:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы можете сделать что-то вроде этого:

const TextInput = ({ placeholder, size, statusStylesInput }) => {
  return (
    <div className = {['text-field', `text-field-${size}`, statusStylesInput].join(' ')}>
      <input 
        type = "text" 
        {...(placeholder ? { placeholder } : {})} 
      />
    </div>
  );
};

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