qt-public-ui
Version:
新设计规范下业务组件库
44 lines • 1.65 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
var _excluded = ["allOption", "fetch", "defer", "onDropdownVisibleChange", "loading"];
import React, { useState, useEffect } from 'react';
import Select from './select';
var AsyncSelect = function AsyncSelect(props) {
var allOption = props.allOption,
fetch = props.fetch,
defer = props.defer,
onDropdownVisibleChange = props.onDropdownVisibleChange,
antdLoading = props.loading,
selectProps = _objectWithoutPropertiesLoose(props, _excluded);
var _useState = useState(false),
loaded = _useState[0],
setLoaded = _useState[1];
var _useState2 = useState(false),
loading = _useState2[0],
setLoading = _useState2[1];
var _useState3 = useState(allOption ? [allOption] : []),
options = _useState3[0],
setOptions = _useState3[1];
var loadOptions = function loadOptions() {
setLoading(true);
fetch && fetch().then(function (data) {
setLoading(false);
setLoaded(true);
setOptions(allOption ? [allOption].concat(data) : data);
});
};
var dropdown = function dropdown(open) {
open && !loaded && defer && !loading && loadOptions();
typeof onDropdownVisibleChange === 'function' && onDropdownVisibleChange(open);
};
useEffect(function () {
defer || loadOptions();
}, []);
return /*#__PURE__*/React.createElement(Select, _extends({
onDropdownVisibleChange: dropdown,
loading: loading,
options: options
}, selectProps));
};
AsyncSelect.displayName = 'Async';
export default AsyncSelect;