“Добавление Debounce в автозаполняющий пользовательский интерфейс материала” Ответ

Добавление Debounce в автозаполняющий пользовательский интерфейс материала

import React, { useCallback, useEffect, useState } from "react";
import Autocomplete from '@mui/lab/Autocomplete';
import TextField from '@mui/material/TextField';
import debounce from "lodash/debounce";
import { getOptionsAsync } from "./options";

function App() {
  const [options, setOptions] = useState([]);
  const [inputValue, setInputValue] = React.useState("");
  const getOptionsDelayed = useCallback(
    debounce((text, callback) => {
      setOptions([]);
      getOptionsAsync(text).then(callback);
    }, 200),
    []
  );

  useEffect(() => {
    getOptionsDelayed(inputValue, (filteredOptions) => {
      setOptions(filteredOptions);
    });
  }, [inputValue, getOptionsDelayed]);

  return (
    <Autocomplete
      options={options}
      getOptionLabel={(option) => option.title}
      filterOptions={(x) => x} // disable filtering on client
      loading={options.length === 0}
      onInputChange={(e, newInputValue) => setInputValue(newInputValue)}
      renderInput={(params) => <TextField {...params} label="Combo box" />}
    />
  );
}
Mystic Dev

Добавление Debounce в автозаполняющий пользовательский интерфейс материала

import _ from 'lodash';

...

doSearch(text) {
   // Your normal handler here
}

...

// Delay autocomplete until 500 ms after use stops typing
<AutoComplete
  onUpdateInput={_.debounce((value) => doSearch(value), 500)}
  ...
/>
Mystic Dev

Ответы похожие на “Добавление Debounce в автозаполняющий пользовательский интерфейс материала”

Вопросы похожие на “Добавление Debounce в автозаполняющий пользовательский интерфейс материала”

Больше похожих ответов на “Добавление Debounce в автозаполняющий пользовательский интерфейс материала” по JavaScript

Смотреть популярные ответы по языку

Смотреть другие языки программирования