@aliretail/react-materials-components
Version:
108 lines (92 loc) • 3.29 kB
JavaScript
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
import _regeneratorRuntime from "@babel/runtime/regenerator";
import React, { useState, useEffect, useImperativeHandle, forwardRef } from 'react';
import Dashboard from "./dashboard";
import request from "./utils/request";
var DashboardWithRequest = function DashboardWithRequest(props, ref) {
var _useState = useState([]),
dataSource = _useState[0],
setDataSource = _useState[1];
var _useState2 = useState(false),
isLoading = _useState2[0],
setIsLoading = _useState2[1];
var appCode = props.appCode,
apiCode = props.apiCode,
_props$apiParams = props.apiParams,
apiParams = _props$apiParams === void 0 ? {} : _props$apiParams,
url = props.url;
var refresh = /*#__PURE__*/function () {
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(params) {
var errorMsg, data, opt, _yield$request, _yield$request$result, result;
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (!(!(appCode && apiCode) && !url)) {
_context.next = 4;
break;
}
errorMsg = 'error: Dashboard: 请输入正确的接口访问地址';
console.warn(errorMsg);
return _context.abrupt("return", Promise.reject(errorMsg));
case 4:
data = params || apiParams;
opt = {
data: data
};
if (apiCode && appCode) {
Object.assign(opt, {
apiCode: apiCode,
appCode: appCode
});
} else if (url) {
Object.assign(opt, {
url: url
});
}
_context.prev = 7;
setIsLoading(true);
_context.next = 11;
return request(opt);
case 11:
_yield$request = _context.sent;
_yield$request$result = _yield$request.result;
result = _yield$request$result === void 0 ? [] : _yield$request$result;
setDataSource(result);
_context.next = 20;
break;
case 17:
_context.prev = 17;
_context.t0 = _context["catch"](7);
console.warn('err:', _context.t0);
case 20:
_context.prev = 20;
setIsLoading(false);
return _context.finish(20);
case 23:
case "end":
return _context.stop();
}
}
}, _callee, null, [[7, 17, 20, 23]]);
}));
return function refresh(_x) {
return _ref.apply(this, arguments);
};
}();
useImperativeHandle(ref, function () {
return {
reload: function reload(params) {
refresh(params);
}
};
}, [apiParams]);
useEffect(function () {
refresh();
}, [apiCode, appCode]);
return /*#__PURE__*/React.createElement(Dashboard, {
dataSource: dataSource,
isLoading: isLoading
});
};
export default /*#__PURE__*/forwardRef(DashboardWithRequest);