UNPKG

react-router-waiter

Version:

react-router v6 路由统一管理及路由拦截方案

1 lines 3.17 kB
!function(){"use strict";var e={n:function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,{a:r}),r},d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{default:function(){return d}});var r=require("react-router-dom"),n=require("react"),o=e.n(n);var a={getDataType:function(e){return Object.prototype.toString.call(e).match(/\s(\w+)\]/)[1]}},u=null;var i=function(e){var t=e.element,n=e.meta,i=e.onRouteBefore;n=n||{};var c=(0,r.useLocation)().pathname,l=(0,r.useNavigate)();if(i){if(u===t)return t;var f=i({pathname:c,meta:n});"Promise"===a.getDataType(f)?f.then((function(e){e&&e!==c&&l(e,{replace:!0})})):f&&f!==c&&(t=o().createElement(r.Navigate,{to:f,replace:!0}))}return u=t,t};function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?c(Object(r),!0).forEach((function(t){f(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function f(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var p=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.routes=t.routes||[],this.onRouteBefore=t.onRouteBefore,this.loading=t.loading||o().createElement("div",null)}var t,n,a;return t=e,n=[{key:"transformRoutes",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.routes,n=[];return t.forEach((function(t){var a=l({},t);void 0!==a.path&&(a.redirect?a.element=o().createElement(r.Navigate,{to:a.redirect,replace:!0}):a.component&&(a.element=e.lazyLoad(a.component,a.meta||{})),delete a.redirect,delete a.component,delete a.meta,a.children&&(a.children=e.transformRoutes(a.children)),n.push(a))})),n}},{key:"lazyLoad",value:function(e,t){var r=o().lazy(e),n=o().createElement(o().Suspense,{fallback:this.loading},o().createElement(r,{_meta:t}));return o().createElement(i,{element:n,meta:t,onRouteBefore:this.onRouteBefore})}}],n&&s(t.prototype,n),a&&s(t,a),Object.defineProperty(t,"prototype",{writable:!1}),e}();var d=function(e){var t=e.routes,n=e.onRouteBefore,o=e.loading,a=new p({routes:t,onRouteBefore:n,loading:o}).transformRoutes();return(0,r.useRoutes)(a)};exports.default=t.default,Object.defineProperty(exports,"__esModule",{value:!0})}();