Material-UI React-Select Ошибка автозаполнения предварительно выбранных элементов - PullRequest
0 голосов
/ 18 октября 2019

Я использую компонентact-select в своем приложении. Это связано с Алголией, которая предоставляет варианты для меня. Все работает хорошо, за исключением случаев, когда я уже выбрал значение ранее, а затем снова введите select. Каждый элемент выглядит предварительно выбранным.

No preselected item [With a preselected value[2] Это мой код:

type Hit = {
 address: string;
  zip: string;
  city: string;
  objectID: string;
};

const algoliaClient = algoliasearch(
  'something',
  'something',
  {
    timeout: 1000,
  },
);

const index = algoliaClient.initIndex('something');

export const Search: React.FC<{ section: ComponentTextInput }> = ({
  section,
}) => {
  const [currentHit, setCurrentHit] = React.useState<Hit>();
  const [hitArray, setHitArray] = React.useState<Hit[]>([]);
  const [noOptionMessage, setNoOptionMessage] = React.useState<string>(
    'Bitte geben Sie mindestens 3 Zeichen ein',
  );

  function onChange(value: string) {
    if (value.length > 2) {
      index.search<Hit>({ query: value }, (error, { hits }) => {
        if (error) {
          throw new Error(error.message);
        }
        if (hits.length === 1) {
          setCurrentHit(hits[0]);
        } else {
          setHitArray(hits);
          setCurrentHit(undefined);
          setNoOptionMessage('Keine Addresse gefunden');
        }
      });
    } else {
      setNoOptionMessage('Bitte geben Sie mindestens 3 Zeichen ein');
      setHitArray([]);
    }
  }

  const classes = useStyles();

  return (
    <div className={classes.textField}>
      <Select
        onInputChange={onChange}
        inputId="react-select-single"
        placeholder="Bitte geben Sie Ihre Addresse ein"
        TextFieldProps={{
          label: 'Address',
          InputLabelProps: {
            htmlFor: 'react-select-single',
            shrink: false,
          },
        }}
        value={currentHit}
        noOptionsMessage={() => noOptionMessage}
        options={hitArray}
        pageSize={10}
      />
    </div>
  );
};

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

Заранее спасибо!

...