Как отключить опцию удаления для определенного значения в ChipInput(материал-пользовательский интерфейс-ввод чипа)?

#javascript #reactjs #material-ui

Вопрос:

Я использую поле ввода чипа для ввода электронных писем. Я хочу отключить функцию удаления для определенных значений. Допустим, я заполняю поле ввода удаленными данными, а также предоставляю функциональность для добавления новых чипов, но я хочу отключить опцию удаления для извлекаемых значений(предыдущих значений). Я просмотрел документацию, но не нашел никакого решения.

Ответ №1:

Вы можете это сделать

   <Chip label="Disabled" disabled={true} />

 

Ответ №2:

Я понял это, я использовал «ввод чипа material ui», у него есть функция chipRenderer. Это функция обратного вызова, которая будет отображать чип в соответствии с предоставленными значениями.

Пример кода:

  chipRenderer={({value}, key) => (
            <Chip
              key={key}
              label={value}
              deleteIcon={
              <CancelIcon/>}
              onDelete={adminEmails.length > 0 amp;amp; adminEmails.includes(value) ? undefined : () => {
                  let oldValues = [...formik.values.super_admin_email];
                  let index = key
                  if (index > -1) {
                    oldValues.splice(index, 1);
                    formik.setFieldValue("super_admin_email", oldValues);
                  }
                }
              }
            >
            </Chip>
              )}
 

Внутри chipRenderer сначала я проверил, является ли данное электронное письмо старым или недавно введенным. Если это старое электронное письмо, то я удалил кнопку «Удалить» с чипа, а если это новое электронное письмо, то отображается кнопка «Удалить».

ссылка на codesandbox

Комментарии:

1. В вашем фрагменте есть синтаксические ошибки, пожалуйста, исправьте их и обновите свой ответ.

2. На самом деле это пример функции обратного вызова, если вы хотите, я могу создать пример в песочнице кода

3. Это было бы полезно для пользователей, читающих этот ответ, чтобы попытаться интерпретировать его, пожалуйста, используйте песочницы кода только при необходимости, в противном случае есть кодовые поля, к которым можно получить доступ через language ...

4. Спасибо! Обязательно удалите фрагмент из ответа и добавьте его в блок кода