国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

React中如何使用自訂警報(bào)切換選項(xiàng)卡?
P粉744831602
P粉744831602 2024-02-03 18:42:35
0
2
512

我正在建立一個(gè) react-router 提示,所以在這裡我想在您想從一個(gè)選項(xiàng)卡切換到另一個(gè)選項(xiàng)卡時(shí)應(yīng)用警報(bào)訊息。我已經(jīng)應(yīng)用了警報(bào)屬性,因?yàn)槲覄?chuàng)建了一個(gè)函數(shù) confirmSwitchTab,但它不起作用。如何發(fā)出該提示,以便當(dāng)我想在每條路線中從一個(gè)選項(xiàng)卡切換到另一個(gè)選項(xiàng)卡時(shí),它會(huì)顯示該訊息。

import { React, useState } from "react";
import { Link } from "react-router-dom";
import LoadingBar from "react-top-loading-bar";
import { useNavigate } from "react-router-dom";

export default function Demo() {
  const [progress, setProgress] = useState(0);
  const navigate = useNavigate();

  function confirmSwitchTab() {
    //Prompt the user with a confirm message.
    var result = confirm("Are you sure you want to switch tabs?");
    //If the user confirms, return true, else return false.
    if (result) {
      return true;
    } else {
      return false;
    }
  }

  const onClick = () => {
    const userConfirmsSwith = confirmSwitchTab()
    if (userConfirmsSwith) navigate("/")
    // else you don't do anything.
  }

  return (
    <>
      <LoadingBar
        color="blue"
        progress={progress}
        onLoaderFinished={() => setProgress(0)}
        waitingTime={800}
        loaderSpeed={100}
        height={4}
      />
      <ul
        style={{
          display: "flex",
          justifyContent: "space-around",
          listStyle: "none"
        }}
      >
        <li>
          <Link
            to="/"
            onClick={() => {
              onClick();
              setTimeout(() => setProgress(100), 500)
            }}
          >
            Home
          </Link>
        </li>
        <li>
          <Link
            to="/about"
            onClick={() => {
              onClick();
              setTimeout(() => setProgress(100), 500)
            }}
          >
            About
          </Link>
        </li>
      </ul>
    </>
  );
}

P粉744831602
P粉744831602

全部回覆(2)
P粉564301782

它不起作用,因?yàn)槌淌酱a不會(huì)阻止預(yù)設(shè)連結(jié)操作的發(fā)生。點(diǎn)擊鏈接,導(dǎo)航操作立即生效,同時(shí)附加的 onClick 處理程序正在運(yùn)行其他邏輯。

點(diǎn)擊處理程序也應(yīng)該使用點(diǎn)擊事件物件並對(duì)其呼叫 preventDefault 以停止發(fā)生導(dǎo)航操作。

export default function Demo() {
  const [progress, setProgress] = useState(0);
  const navigate = useNavigate();

  function confirmSwitchTab() {
    //Prompt the user with a confirm message.
    return confirm("Are you sure you want to switch tabs?");
  }

  const clickHandler = (target = "/") => (e) => {
    e.preventDefault(); //  setProgress(100), 500);

    if (confirmSwitchTab()) {
      navigate(target);
    }
    // else you don't do anything.
  }

  return (
    
      
      
  • Home
  • About
> ); }
P粉914731066

我相信這裡對(duì) onLeave 的工作原理有誤解:-)

傳回 true 不會(huì)「確認(rèn)離開操作」。無論如何,請(qǐng)假動(dòng)作都會(huì)被確認(rèn)。 onLeave 屬性將簡(jiǎn)單地取得函數(shù)並在您離開頁面時(shí)觸發(fā)它。這個(gè)函數(shù)可以是一個(gè)提示,就像這裡一樣,但傳回的值不會(huì)被使用。

您想要實(shí)現(xiàn)的目標(biāo)必須在頁面實(shí)際離開之前完成。在您的應(yīng)用程式中的某個(gè)位置,您應(yīng)該有一個(gè)導(dǎo)航選單,您可以在其中實(shí)際透過點(diǎn)擊按鈕來更改頁面(通常使用

history.push("My/New/Path")

)

現(xiàn)在這就是您要使用函數(shù)的地方。

假設(shè)你有類似的東西

您想在該回呼中呼叫confirmSwitchTab 函數(shù)。

你可以把它改成類似的

const onClick = () => {
  const userConfirmsSwith = confirmSwitchTab()
  if (userConfirmsSwith) history.push('home')
  // else you don't do anything.
}

希望這對(duì)您有幫助,如果我的問題有誤,請(qǐng)告訴我!

乾杯

問題編輯後

#試試這個(gè):

import { React, useState } from "react";
import LoadingBar from "react-top-loading-bar";
import { useNavigate } from "react-router-dom";
export default function Demo() {
  const [progress, setProgress] = useState(0);
  const navigate = useNavigate();
  function confirmSwitchTab() {
    //Prompt the user with a confirm message.
    var result = confirm("Are you sure you want to switch tabs?");
    //If the user confirms, return true, else return false.
    if (result) {
      return true;
    } else {
      return false;
    }
  }
  const onClick = (path) => {
    setTimeout(() => setProgress(100), 500)
    const userConfirmsSwith = confirmSwitchTab()
    if (userConfirmsSwith) navigate(path)
    // else you don't do anything.
  }
  return (
    
       setProgress(0)}
        waitingTime={800}
        loaderSpeed={100}
        height={4}
      />
      
> ); }
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板