国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

react離開頁面,自定義彈框攔截,路由攔截

X1nFLY / 2586人閱讀

摘要:前言項目有個需求是跳轉路由,在離開頁面前,需要彈框詢問用戶是否確定離開。

前言:
項目有個需求是:跳轉路由,在離開頁面前,需要彈框詢問用戶是否確定離開。
react-router組件是可以的,但是,怎么使用antd組件(或者說自定義組件)呢?
請看下面

先看的這個:https://stackoverflow.com/questions/32841757/detecting-user-leaving-page-with-react-router
(1)使用react-router

import { Prompt } from "react-router"

(2)支持函數

 {
    return window.confirm(`confirm to leave to ${location.pathname}?`);
  }}
/>

(3)history.block這個是個坑!

import { history } from "path/to/history";
class MyComponent extends React.Component {
   componentDidMount() {
      history.block(targetLocation => {
           // take your action here     
           return false;
      });
   }
   render() {
      //component render here
   }
}

坑的原因是history.block()方法是不能和組件并列使用的,而必須在history.block()內部去調用組件(就是注釋take your action here那里),這就導致一個問題:組件里的 onOk、onCancel 如何返回值給 history.block()的 return 語句(return false/true)的同時,不讓history.block()的 return 語句和 組件順序執行呢?

說白點就是,組件先顯示出來,阻塞后面的 return false/true,等 組件的 onOk、onCancel 方法執行后,再 return false/true

我試了幾種方法,不行,直到找到這篇文章:
Using React-Router v4 Prompt with custom modal component

(4)在離開頁面,路由跳轉時,自定義彈框攔截,并詢問

  handlePrompt = location => {
    if (!this.isSave) {
      this.showModalSave(location);
      return false;
    }
    return true;
  };

  showModalSave = location => {
    this.setState({
      modalVisible: true,
      location,
    });
  };

  closeModalSave = () => {
    const { location } = this.state;
    const { history } = this.props;
    this.setState({
      modalVisible: false,
    });
    history.push({
      pathname: `..${location.pathname}`,
    });
  };

  handlePrompt = location => {
    if (!this.isSave) {
      this.showModalSave(location);
      return false;
    }
    return true;a
  };

  handleSave = () => {
    const { location } = this.state;
    const { history } = this.props;
    this.isSave = true;
    console.log(location.pathname, "pathname75");
    history.push({
      pathname: `..${location.pathname}`,
    });
    this.setState({
      modalVisible: false,
    });
    this.saveAll();
  };

 

是否保存修改?

完美實現離開頁面,路由攔截的同時,顯示自定義模態框!

(完)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/104195.html

相關文章

  • 19/3/29學習筆記

    摘要:如果用戶已經登錄,則順利進入路由,否則就進入登錄頁面。如果全部鉤子執行完了,則導航的狀態就是確認的。通過這個字段來判斷該路由是否需要登錄權限。還有一種情況便是當前失效了,但是依然保存在本地。通過配置,當后端接口返回未授權,讓用戶重新登錄。 vue+axios 前端實現登錄攔截(路由攔截、http攔截) 一、路由攔截登錄攔截邏輯第一步:路由攔截首先在定義路由的時候就需要多添加一個自定義字...

    galois 評論0 收藏0
  • react-router v4.x 源碼拾遺1

    摘要:還是先來一段官方的基礎使用案例,熟悉一下整體的代碼流程中使用了端常用到的等一些常用組件,作為的頂層組件來獲取的和設置回調函數來更新。 react-router是react官方推薦并參與維護的一個路由庫,支持瀏覽器端、app端、服務端等常見場景下的路由切換功能,react-router本身不具備切換和跳轉路由的功能,這些功能全部由react-router依賴的history庫完成,his...

    itvincent 評論0 收藏0
  • react-router v4.x 源碼拾遺1

    摘要:還是先來一段官方的基礎使用案例,熟悉一下整體的代碼流程中使用了端常用到的等一些常用組件,作為的頂層組件來獲取的和設置回調函數來更新。 react-router是react官方推薦并參與維護的一個路由庫,支持瀏覽器端、app端、服務端等常見場景下的路由切換功能,react-router本身不具備切換和跳轉路由的功能,這些功能全部由react-router依賴的history庫完成,his...

    Joyven 評論0 收藏0
  • 淺談使用 Vue 構建前端 10w+ 代碼量的單頁面應用開發底層

    摘要:其實就是我們開始掛載上去的我們在這里出去,我們就可以在回調里面只處理我們的業務邏輯,而其他如斷網超時服務器出錯等均通過攔截器進行統一處理。 showImg(https://segmentfault.com/img/remote/1460000015472616?w=845&h=622); 開始之前 隨著業務的不斷累積,目前我們 ToC 端主要項目,除去 node_modules, bu...

    rickchen 評論0 收藏0

發表評論

0條評論

X1nFLY

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<