UNPKG

@aliretail/react-materials-components

Version:
108 lines (92 loc) 3.29 kB
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);