Прекратить реагирование - выберите расширение при добавлении параметров - PullRequest
2 голосов
/ 19 марта 2019

Таким образом, я изучаю возможность потенциального использования реакции выбора для проекта, который требует множественного выбора.Тем не менее, множественный выбор пример продолжает расширяться вниз по мере выбора большего количества элементов.Это не сработает, если в выпадающем меню есть несколько вариантов выбора (скажем, 100).Есть ли способ в библиотеке реагировать на выбор значения "Xyz & 5 more" или что-то подобное?

import React, { Component } from 'react'
import Select from 'react-select'

const options = [
  { value: 'chocolate', label: 'Chocolate' },
  { value: 'strawberry', label: 'Strawberry' },
  { value: 'vanilla', label: 'Vanilla' },
  { value: 'cherry', label: 'Cherry' },
  { value: 'foo', label: 'Foo' },
  { value: 'bar', label: 'Bar' }
]

const MyComponent = () => (
  <Select
    options={options}
    isMulti
    className="basic-multi-select"
    classNamePrefix="select"
  />
)

1 Ответ

2 голосов
/ 25 марта 2019

Можно использовать каркас компонентов , чтобы перезаписать компонент ValueContainer, который содержит выбранные значения в виде значка.

const ValueContainer = ({ children, getValue, ...props }) => {
  var values = getValue();
  var valueLabel = "";

  if (values.length > 0) valueLabel += props.selectProps.getOptionLabel(values[0]);
  if (values.length > 1) valueLabel += ` & ${values.length - 1} more`;

  // Keep standard placeholder and input from react-select
  var childsToRender = React.Children.toArray(children).filter((child) => ['Input', 'DummyInput', 'Placeholder'].indexOf(child.type.name) >= 0);

  return (
    <components.ValueContainer {...props}>
      {!props.selectProps.inputValue && valueLabel }
      { childsToRender }
    </components.ValueContainer>
  );
};

<Select
  { ... }
  isMulti
  components={{
    ValueContainer
  }}
  hideSelectedOptions={false}
/>

Обратите внимание на фильтрацию и включение * 1007Компонент * (или DummyInput): без него основные функции компонента Select (такие как фокусировка и т. д.) будут потеряны.Также установите для hideSelectedOptions prop значение false, чтобы можно было отменить выбор выбранных параметров.

Рабочий пример можно посмотреть здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...