在路由变更时拦截弹出提示框让用户确认

2020-07-16  本文已影响0人  踩坑怪At芬达
//myPage.jsx
import { Prompt } from 'react-router-dom';

class MyPage extends React.Component {
  return (
    <>
      <Prompt message={() => '有修改尚未保存,确定要离开页面吗?'} />
      <section>页面内容</section>
    </>
  )
}

import React, { Suspense } from 'react';
import ReactDOM from 'react-dom';
import { HashRouter, Route, Switch } from 'react-router-dom';
import myPage from 'myPage.jsx'

const getConfirmation = (message, callback) => {
  //这里可以自定义样式来让用户做出选择,结果通过callback返回
  Modal.confirm({
    title: message,
    onCancel: () => {
      callback(false);
    },
    onOk: () => {
      callback(true);
    },
  });
};

const BasicRoute = () => (
    <HashRouter getUserConfirmation={getConfirmation}
        <Switch>
          <Route exact path='/page1'  component={myPage}/>
          <Route exact path='/page2' />
          <Route exact path='/page3' />
        </Switch>
    </HashRouter>
);

ReactDOM.render(<BasicRoute />, document.getElementById('main-view'));

相关文件引用及推荐

上一篇 下一篇

猜你喜欢

热点阅读