UNPKG

@vve/react-router

Version:

react router for react-helper & with keep-alive

43 lines (42 loc) 1.33 kB
import React from 'react'; import PropTypes from 'prop-types'; import invariant from 'tiny-invariant'; import Lifecycle from "./lifecycle"; import RouterContext from "./router-context"; /** * The public API for prompting the user before navigating away from a screen. */ function Prompt(_ref) { var message = _ref.message, _ref$when = _ref.when, when = _ref$when === void 0 ? true : _ref$when; return /*#__PURE__*/React.createElement(RouterContext.Consumer, null, context => { invariant(context, 'You should not use <Prompt> outside a <Router>'); if (!when || context.staticContext) return null; var method = context.history.block; return /*#__PURE__*/React.createElement(Lifecycle, { onMount: self => { self.release = method(message); }, onUpdate: (self, prevProps) => { if (prevProps.message !== message) { self.release(); self.release = method(message); } }, onUnmount: self => { self.release(); }, message: message }); }); } if (process.env.NODE_ENV !== 'production') { var messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]); Prompt.propTypes = { when: PropTypes.bool, message: messageType.isRequired }; } export default Prompt; //# sourceMappingURL=prompt.js.map