react中打開新頁面並且傳參的方法


一.使用href:

    const w=window.open('about:blank');
       w.location.href='/#/exam?id='+value.examsId
    在新的頁面上可直接在location里接收

  Js的幾種調用方法(參考總結的)

      1、a href="javascript:js_method();"
       這是常用的方法,但是這種方法在傳遞this等參數的時候很容易出問題,而且javascript:協議作為a的href屬性的時候不僅會導致不必要的觸發window.onbeforeunload事件,在IE里面更會使gif動畫圖片停止播放。W3C標准不推薦在href里面執行javascript語句
       2、 a href="javascript:void(0);" οnclick="js_method()"
       這種方法是很多網站最常用的方法,也是最周全的方法,onclick方法負責執行js函數,而void是一個操作符,void(0)返回undefined,地址不發生跳轉。而且這種方法不會像第一種方法一樣直接將js方法暴露在瀏覽器的狀態欄。
       3、a href="javascript:;" οnclick="js_method()"
       這種方法跟跟2種類似,區別只是執行了一條空的js代碼。
      4、a href="#" οnclick="js_method()"
       這種方法也是網上很常見的代碼,#是標簽內置的一個方法,代表top的作用。所以用這種方法點擊后網頁后返回到頁面的最頂端。
     5、a href="#" οnclick="js_method();return false;"
       這種方法點擊執行了js函數后return false,頁面不發生跳轉,執行后還是在頁面的當前位置。

      綜合上述,在a中調用js函數最適當的方法推薦使用:

  1.  
    <a href="javascript:void(0);" οnclick="js_method()"></a>
  2.  
    <a href="javascript:;" οnclick="js_method()"></a>
  3.  
    <a href="#" οnclick="js_method();return false;"></a>
二、href="#"的作用

       a中href="#"表示回到最頂部。如果當前頁面中需要滾動的話,那么用這種方式就可以直接回到頂部。比如有些網站會在右下角制作一個圖標按鈕,回到頂部,那么此時可以考慮用這種最簡單的方式實現。

<span style="font-size:14px;"><a href="#">回到最頂端</a></span> 
三、href="URL"的作用

     1、URL為絕對URL

     此時指向另一個站點,比如href="http://write.blog.csdn.net",那么點擊時就會直接跳轉到這個鏈接的頁面。

    2、URL為相對URL

     此時指向站點內的某個文件,比如href="/test.doc",那么點擊時就會直接下載文件。

    3、錨 URL 

       此時指向頁面中的錨,比如href="#top",那么點擊時就會到當前頁面中id="top"的這個錨點,實現當前頁面的所謂跳轉。用的最多就是在可滾動頁面中,添加菜單,可以直接回到頁面中的某個部分的內容。

 
 
四,使用Link標簽傳值
  

<Link
  // 彈出新的選項卡只能用search來傳遞數據,單頁面的話可以使用state
  // 注意,此處search傳遞是以URL拼接的方式傳遞傳遞長度根據瀏覽器限制來的,只能傳遞字符串,
  // 還有search傳遞過去的參數會默認追加一個? e.g search?id=1
  // state則沒有限制,可直接傳遞obj
  to={{ pathname: "/maker/bill/detail/supplement", search: JSON.stringify(billDetailObj) }}
  target="_blank"
  // 當target="_blank"打開新頁面的時候,state內容無法傳遞
  state:{id:1}
  className="fontBlue fontWeight">
  打開新頁面
</Link>
頁面接收:

  // 從location中取出search
  let search = this.props.history.location.search
  // TODO 調試完畢以后需要在這里增加判斷,如果該參數為空則非正常途徑進入需要跳轉到賬單主頁
  // 這里是因為默認前面有一個?,切掉
  search = search.substr(1,search.length);
  // 因為傳遞的有中文,所以此處需要decodeURI進行URL解碼
  const searchObj:BillDetail = JSON.parse(decodeURI(search));
  console.log(searchObj);
  // 將處理完畢的數據更新至state,並渲染到頁面
  this.setState({
    billdDetail:searchObj
  })

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM