最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于react-router中的Prompt組件使用心得

 更新時(shí)間:2023年01月17日 15:18:21   作者:IsQtion  
這篇文章主要介紹了關(guān)于react-router中的Prompt組件學(xué)習(xí)心得,Prompt組件作用是,在用戶準(zhǔn)備離開該頁(yè)面時(shí),?彈出提示,?返回true或者false,?如果為true,?則離開頁(yè)面,?如果為false,?則停留在該頁(yè)面,本文結(jié)合示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

在最近的react項(xiàng)目中, 遇到了一個(gè)需求, 點(diǎn)擊圖片的時(shí)候, 會(huì)出現(xiàn)一個(gè)大圖預(yù)覽, 其實(shí)就是一個(gè)遮罩層, 專門用來顯示大圖的, 但因?yàn)槭且粋€(gè)APP, 所以難免會(huì)有用戶點(diǎn)開大圖后, 不用正常的關(guān)閉按鈕關(guān)閉大圖遮罩層, 而是點(diǎn)擊手機(jī)的返回鍵,這樣就會(huì)造成頁(yè)面后退, 而不僅僅只是關(guān)閉遮罩層了, 所以在此, 我決定使用react-router里的Prompt組件

Prompt

組件作用

該組件主要作用是,在用戶準(zhǔn)備離開該頁(yè)面時(shí), 彈出提示, 返回true或者false, 如果為true, 則離開頁(yè)面, 如果為false, 則停留在該頁(yè)面

引入Prompt組件

import {Prompt } from "react-router-dom";

基本用法1

prompt組件里有一個(gè)message屬性,該屬性就是在用戶離開頁(yè)面時(shí), 所提示的文字內(nèi)容

 <Prompt message="您確定要離開該頁(yè)面嗎?" />

基本用法2

prompt組件中還有一個(gè)when屬性, 就是渲染該組件的條件, 應(yīng)該傳入一個(gè)布爾值,值為true時(shí),則渲染該組件

 <Prompt message="您確定要離開該頁(yè)面嗎?" when={this.state.isOpen} />

基本用法3

prompt組件的message屬性,同時(shí)還可以傳入一個(gè)方法來接收要傳入的文字, 但是要注意的是, 使用三元運(yùn)算符操作, 可以向其中直接傳入文字, 但是如果使用if else來做判斷,那么將無法直接向其中傳入文字

 <Prompt
   message = {() => {
   this.state.isOpen? false: "您確定要離開該頁(yè)面嗎?"
}}
  />

基本用法3(拓展)

在我的工作項(xiàng)目中,想要實(shí)現(xiàn)的一種效果就是, 當(dāng)用戶,在瀏覽大圖時(shí), 按下手機(jī)的返回按鈕時(shí), 將大圖遮罩層關(guān)閉,并且保留在當(dāng)前頁(yè)面, 而如果用戶沒有點(diǎn)開大圖時(shí),按下了手機(jī)的返回按鈕時(shí), 則提示用戶是否離開, 這里通過this.state.isOpen來控制大圖預(yù)覽遮罩層的顯示和隱藏, 上面說過, if else判斷無法向組價(jià)中直接傳入文字內(nèi)容, 但是幸好, message能夠接收一個(gè)方法, 而這個(gè)方法, 最終只需要返回一個(gè)true或者false就可以, 不管中間你寫什么樣的代碼都無所謂

<Prompt
   message = {(location)=>{
     if(!this.state.open) {
       let leave = window.confirm("您確定要離開該頁(yè)面嗎?")          
       if(!leave) {
         return false
       }          
     }else {
       this.setState({
       open: false
     })
     return false
     }
   }}
  />

在上面的代碼中, 我在message中傳入了一個(gè)函數(shù) , 首先是判斷大圖預(yù)覽有沒有被打開, 如果沒有打開, 則通過調(diào)用window.confirm的方法, 設(shè)置網(wǎng)頁(yè)的彈出層,如果用戶點(diǎn)擊取消, 則返回false

補(bǔ)充:React-Router <Prompt> 的使用

Prompt 文檔
Prompt 示例

使用場(chǎng)景:在離開頁(yè)面之前,需要判斷當(dāng)前編輯的內(nèi)容是否已經(jīng)保存,如果沒保存,則彈出提示框,提示用戶保存。

查看 API 文檔

【總結(jié)】:Prompt 有兩個(gè)屬性:message-當(dāng)用戶離開頁(yè)面時(shí)給出的提示信息,when-是否渲染,設(shè)置為 true 時(shí),離開頁(yè)面時(shí)總會(huì)渲染,設(shè)置為 false 時(shí),離開頁(yè)面時(shí)不會(huì)渲染。我們就可以利用when設(shè)置渲染的時(shí)機(jī),當(dāng)用戶對(duì)頁(yè)面內(nèi)容進(jìn)行編輯,且未保存時(shí)離開,設(shè)置when=true,其他情況設(shè)置when=false。

代碼

import { Button, Form, Input, Modal } from "antd";
import { useState } from "react";
import { Prompt, useHistory } from "react-router-dom";

export default function PromptDemo() {
  const history = useHistory();
  const [form] = Form.useForm();
  const [isPrompt, setPrompt] = useState(false);

  const handlePrompt = () => {
    if (!isPrompt) {
      return true;
    }
    Modal.confirm({
      title: "未保存",
      content: "當(dāng)前內(nèi)容未保存,確認(rèn)退出嗎?",
      onOk: () => {
        setPrompt(false);
        history.goBack();
      }
    });
    return false;
  };

  const onFinish = (values: any) => {
    setPrompt(false);
    console.log(values);
  };
  return (
    <div style={{ width: "300px", padding: "40px" }}>
      <Prompt when={isPrompt} message={handlePrompt} />
      <Form form={form} labelCol={{ span: 6 }} onFinish={onFinish}>
        <Form.Item label="姓名" name="name">
          <Input onChange={() => setPrompt(true)} />
        </Form.Item>
        <Form.Item label="手機(jī)號(hào)" name="mobile">
          <Input onChange={() => setPrompt(true)} />
        </Form.Item>
        <Form.Item>
          <Button type="primary" htmlType="submit">
            保存
          </Button>
          <Button
            htmlType="button"
            style={{ marginLeft: "24px" }}
            onClick={() => history.goBack()}
          >
            返回
          </Button>
        </Form.Item>
      </Form>
    </div>
  );
}

到此這篇關(guān)于關(guān)于react-router中的Prompt組件使用心得的文章就介紹到這了,更多相關(guān)react router中Prompt組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React使用react-sortable-hoc如何實(shí)現(xiàn)拖拽效果

    React使用react-sortable-hoc如何實(shí)現(xiàn)拖拽效果

    這篇文章主要介紹了React使用react-sortable-hoc如何實(shí)現(xiàn)拖拽效果問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • JavaScript中rem布局在react中的應(yīng)用

    JavaScript中rem布局在react中的應(yīng)用

    這篇文章主要介紹了JavaScript中rem布局在react中的應(yīng)用 的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • React Native AsyncStorage本地存儲(chǔ)工具類

    React Native AsyncStorage本地存儲(chǔ)工具類

    這篇文章主要為大家分享了React Native AsyncStorage本地存儲(chǔ)工具類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 使用React?Hooks模擬生命周期的實(shí)現(xiàn)方法

    使用React?Hooks模擬生命周期的實(shí)現(xiàn)方法

    這篇文章主要介紹了使用React?Hooks模擬生命周期,本文舉例說明如何使用 hooks 來模擬比較常見的 class 組件生命周期,需要的朋友可以參考下
    2023-02-02
  • React+Webpack快速上手指南(小結(jié))

    React+Webpack快速上手指南(小結(jié))

    這篇文章主要介紹了React+Webpack快速上手指南(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • react基于Ant Desgin Upload實(shí)現(xiàn)導(dǎo)入導(dǎo)出

    react基于Ant Desgin Upload實(shí)現(xiàn)導(dǎo)入導(dǎo)出

    本文主要介紹了react基于Ant Desgin Upload實(shí)現(xiàn)導(dǎo)入導(dǎo)出,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • React?Native與iOS?OC之間的交互示例詳解

    React?Native與iOS?OC之間的交互示例詳解

    這篇文章主要為大家介紹了React?Native與iOS?OC之間的交互示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • reactrouter dom庫(kù)作用小結(jié)

    reactrouter dom庫(kù)作用小結(jié)

    `react-router-dom`是React應(yīng)用中用于實(shí)現(xiàn)頁(yè)面導(dǎo)航、嵌套路由、布局管理以及代碼分割和懶加載的重要庫(kù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • react native 仿微信聊天室實(shí)例代碼

    react native 仿微信聊天室實(shí)例代碼

    這篇文章主要介紹了react native 仿微信聊天室實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • React?如何向url中添加參數(shù)

    React?如何向url中添加參數(shù)

    這篇文章主要介紹了React?如何向url中添加參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評(píng)論

井冈山市| 渝中区| 象山县| 青海省| 丘北县| 察雅县| 澎湖县| 获嘉县| 张北县| 双江| 吴堡县| 扎兰屯市| 会宁县| 内丘县| 荃湾区| 时尚| 玉龙| 勐海县| 四川省| 遂平县| 陵水| 噶尔县| 横峰县| 镇宁| 泰州市| 抚州市| 吴旗县| 靖安县| 遂平县| 怀柔区| 台山市| 长葛市| 石狮市| 湟源县| 迁西县| 茂名市| 巫山县| 金川县| 临洮县| 拜城县| 海阳市|