Ввод множественного выбора с помощью «Уникального выбора» с формой схемы JSON (Повторное редактирование)

#reactjs #jsonschema #multiple-select #react-jsonschema-forms #retool

Вопрос:

В форме Retool со схемой JSON я попытался ввести множественный выбор, который не может выбрать уже выбранные параметры (означает уникальный выбор), но я мог бы выбрать тот, который может выбрать уже выбранные параметры (означает unique select), как показано ниже.

Как показано ниже, я могу выбрать уже выбранную опцию «Английский», поэтому «Английский» выбирается дважды. Другими словами, я все еще могу выбрать «Английский» для второго ввода с несколькими вариантами выбора, даже если я уже выбрал «Английский» для первого ввода с несколькими вариантами выбора (означает ununique select).:

введите описание изображения здесь

Это схема JSON:

 {
  "type": "object",
  "properties": {
    "languages": {
      "type": "array",
      "items": {
        "type": "string",
        enum: ['English', 'Japanese', 'Chinese'],
      },
    }
  }
}
 

Однако вместо «unique select», как указано выше, мне действительно нужен «уникальный выбор», который не может выбрать уже выбранные параметры, как показано ниже:

введите описание изображения здесь

Существуют ли какие-либо способы ввода множественного выбора, которые не могут выбрать уже выбранные параметры(означает уникальный выбор)?

Ответ №1:

Добавьте «uniqueItems: true» в раздел «языки»:

 {
  "type": "object",
  "properties": {
    "languages": {
      "type": "array",
      uniqueItems: true, // Here
      "items": {
        "type": "string",
        enum: ['English', 'Japanese', 'Chinese'],
      },
    }
  }
}
 

Таким образом, вы можете ввести несколько вариантов выбора, которые не могут выбрать уже выбранные параметры(означает уникальный выбор).:

введите описание изображения здесь

введите описание изображения здесь

Кроме того, если вы добавите «uniqueItems: false» в разделе «языки»,

 {
  "type": "object",
  "properties": {
    "languages": {
      "type": "array",
      uniqueItems: true, // Here
      "items": {
        "type": "string",
        enum: ['English', 'Japanese', 'Chinese'],
      },
    }
  }
}
 

результатом является ввод множественного выбора, который может выбрать уже выбранные параметры (означает unique select):

введите описание изображения здесь