MCPcopy Index your code
hub / github.com/JedWatson/react-select / useAsync

Function useAsync

packages/react-select/src/useAsync.ts:45–202  ·  view source on GitHub ↗
({
  defaultOptions: propsDefaultOptions = false,
  cacheOptions = false,
  loadOptions: propsLoadOptions,
  options: propsOptions,
  isLoading: propsIsLoading = false,
  onInputChange: propsOnInputChange,
  filterOption = null,
  ...restSelectProps
}: AsyncProps<Option, IsMulti, Group> & AdditionalProps)

Source from the content-addressed store, hash-verified

43 AsyncAdditionalProps<Option, Group>;
44
45export default function useAsync<
46 Option,
47 IsMulti extends boolean,
48 Group extends GroupBase<Option>,
49 AdditionalProps
50>({
51 defaultOptions: propsDefaultOptions = false,
52 cacheOptions = false,
53 loadOptions: propsLoadOptions,
54 options: propsOptions,
55 isLoading: propsIsLoading = false,
56 onInputChange: propsOnInputChange,
57 filterOption = null,
58 ...restSelectProps
59}: AsyncProps<Option, IsMulti, Group> & AdditionalProps): StateManagerProps<
60 Option,
61 IsMulti,
62 Group
63> &
64 Omit<
65 AdditionalProps,
66 keyof AsyncAdditionalProps<Option, Group> | AsyncManagedPropKeys
67 > {
68 const { inputValue: propsInputValue } = restSelectProps;
69
70 const lastRequest = useRef<unknown>(undefined);
71 const mounted = useRef(false);
72
73 const [defaultOptions, setDefaultOptions] = useState<
74 OptionsOrGroups<Option, Group> | boolean | undefined
75 >(Array.isArray(propsDefaultOptions) ? propsDefaultOptions : undefined);
76 const [stateInputValue, setStateInputValue] = useState<string>(
77 typeof propsInputValue !== 'undefined' ? (propsInputValue as string) : ''
78 );
79 const [isLoading, setIsLoading] = useState(propsDefaultOptions === true);
80 const [loadedInputValue, setLoadedInputValue] =
81 useState<string | undefined>(undefined);
82 const [loadedOptions, setLoadedOptions] = useState<
83 OptionsOrGroups<Option, Group>
84 >([]);
85 const [passEmptyOptions, setPassEmptyOptions] = useState(false);
86 const [optionsCache, setOptionsCache] = useState<
87 Record<string, OptionsOrGroups<Option, Group>>
88 >({});
89 const [prevDefaultOptions, setPrevDefaultOptions] =
90 useState<OptionsOrGroups<Option, Group> | boolean | undefined>(undefined);
91 const [prevCacheOptions, setPrevCacheOptions] = useState(undefined);
92
93 if (cacheOptions !== prevCacheOptions) {
94 setOptionsCache({});
95 setPrevCacheOptions(cacheOptions);
96 }
97
98 if (propsDefaultOptions !== prevDefaultOptions) {
99 setDefaultOptions(
100 Array.isArray(propsDefaultOptions) ? propsDefaultOptions : undefined
101 );
102 setPrevDefaultOptions(propsDefaultOptions);

Callers 2

Async.tsxFile · 0.85
AsyncCreatable.tsxFile · 0.85

Calls 2

handleInputChangeFunction · 0.90
loadOptionsFunction · 0.50

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…