分享鏈接實現狀態共享

有這么一個場景:就是有一些列表頁面,然后上面是有一些篩選項的,我去對這個列表做了一些篩選出來一個結果,然后我想把這個鏈接,或者說把這個篩選結構給分享出去,讓別人在打開這個頁面的時候,也是這些這個篩選結果,這些要怎么做?

在列表頁面中實現篩選狀態分享功能,確保他人打開鏈接時自動還原篩選狀態。


?? ??一、URL 參數化方案(前端主導)??

??1. 將篩選條件映射為 URL 參數??
  • ??實現邏輯??:

    • 將篩選項的鍵值對轉換為查詢字符串,如 ?category=books&price=100-200
    • 使用 encodeURIComponent 處理特殊字符,避免解析錯誤。
  • ??代碼示例??:

    // 生成分享鏈接
    const generateShareLink = () => {const params = new URLSearchParams({category: 'books',minPrice: 100,maxPrice: 200,sort: 'newest'});return `${window.location.origin}/list?${params.toString()}`;
    };
    
  • ??還原篩選狀態??:
    頁面初始化時解析 URL 參數,初始化篩選組件狀態:

    const params = new URLSearchParams(window.location.search);
    const category = params.get('category'); // 'books'
    
??2. 復雜條件的序列化??
  • ??多選值??:用逗號分隔,如 tags=tech,finance

  • ??范圍值??:拆分為獨立參數,如 minPrice=100&maxPrice=200

  • ??對象結構??:使用 JSON 序列化后編碼存儲:

    const filters = { category: 'books', price: { min: 100, max: 200 } };
    const encoded = encodeURIComponent(JSON.stringify(filters));
    // URL 示例:/list?filters=%7B%22category%22%3A%22books%22%7D
    
??適用場景??
  • 篩選條件較少且結構簡單的前端應用。
  • 優勢:實現快,無需后端支持;缺點:URL 過長影響體驗(超過 2KB 可能被截斷)。

🌐 ??二、服務端支持方案(數據庫存儲)??

??1. 服務端保存篩選配置??
  • ??流程??:

    1. 前端將篩選條件發送至后端 API。
    2. 后端生成唯一 ID 并存儲到數據庫(如 MongoDB、MySQL)。
    3. 返回短鏈 /list?configId=xxx,分享該鏈接。
  • ??API 設計示例??:

    // 前端請求
    POST /api/save-filter-config
    { "filters": { "category": "books" } }// 返回響應
    { "url": "https://example.com/list?configId=xxx" }
    
??2. 頁面加載時請求配置??
useEffect(() => {const configId = new URLSearchParams(location.search).get('configId');if (configId) {fetch(`/api/get-filter-config?id=${configId}`).then(res => res.json()).then(data => setFilters(data));}
}, []);
??適用場景??
  • 企業級應用,需支持跨設備、長期有效的分享。
  • 優勢:鏈接簡潔,可追蹤分享次數;缺點:需后端開發和存儲成本。

💎 ??方案對比與選型建議??

??方案??適用場景優點缺點
??URL 參數化??簡單篩選,條件較少無后端依賴,實現快URL 過長,可讀性差
??前端存儲+短鏈(不適合此場景)??復雜條件,單設備分享避免長 URL,支持復雜結構跨設備失效
??服務端存儲??企業應用,長期/跨設備分享鏈接簡潔,可審計追蹤需后端開發,存儲成本

??推薦路徑??:

  • 個人項目/輕量需求 → ??URL 參數化??(快速實現)
  • 中大型項目 → ??服務端方案??(擴展性強,易維護)
  • 臨時分享 → ??前端存儲+短鏈??(節省后端資源)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/91870.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91870.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91870.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Fay數字人如何使用GPT-SOVITS進行TTS轉換以及遇到的一些問題

一、GPT-SoVITS 簡介 GPT-SoVITS 是一款開源的語音合成(TTS)工具,結合了 GPT 模型的文本理解能力與 SoVITS(Sound of Voice In Text-to-Speech)的聲紋模擬技術,能夠實現高自然度、個性化的語音合成。它支持…

HTML 顏色值

HTML 顏色值 引言 在網頁設計和開發中,顏色是一個重要的元素,它能夠幫助用戶更好地理解內容,提升視覺效果。HTML 顏色值是用于指定網頁中元素顏色的一種標準表示方法。本文將詳細介紹 HTML 顏色值的種類、表示方法以及在實際應用中的使用技巧。 HTML 顏色值種類 HTML 顏…

關于記錄一下“bug”,在做圖片上傳的時候出現的小問題

項目場景:之前的話寫過csdn,最近出現了一些小事情,所以耽誤了好久沒有更新,最近把以前的項目拿出來然后改了下環境就出現了一些問題,該項目使用SpringBoot3.5 SpringMVC Mybatis-Plus3.5.0,然后權限控制采…

數據結構:基礎知識和鏈表①

一、概念程序數據結構算法1.描述數據存儲和操作的結構 2.操作數據對象的方法二、衡量代碼的質量和效率 無論代碼操作數據量多大,希望程序代碼的運行時間保持恒定 隨著數據的增長,程序運行時間緩慢增長隨著數據的增長,程序運…

進階向:自動化天氣查詢工具(API調用)

自動化天氣查詢工具(API調用)完全指南天氣數據是日常生活中經常需要查詢的信息之一。本教程將介紹如何使用Python編寫一個自動化天氣查詢工具,通過調用開放的天氣API獲取實時天氣數據。這個工具適合完全不懂編程的新手學習,將從最…

【ROS2】常用命令

1、目錄結構在 ROS 2 包中,launch、urdf、rviz(通常指 RViz 配置文件)、config 等文件夾應直接放在包的根目錄下(與 robot_arm/ Python 模塊目錄同級)。這是 ROS 2 社區的通用約定,便于工具(如 …

基礎組件(三):mysql連接池

文章目錄一、MySQL連接池設計1. 連接池解決了什么問題?連接池的作用 (好處)為什么不創建多條連接而用連接池2. 同步和異步連接池的區別同步連接池(場景局限,應用服務器啟動時初始化資源)異步連接池&#xf…

FI文件包含漏洞

本地文件包含(LFI)文件包含開發人員將可重復使用的內容寫到單個文件中,使用時直接調用此文件,無需再次編寫,這種調用文件的過程一般被稱為文件包含。這樣編寫代碼能減少代碼冗余,降低代碼后期維護難度&…

rapidocr_web v1.0.0發布了

建立RapidOCRWeb獨立倉庫 終于將web這塊代碼移了出來,成立了獨立倉庫RapidOCRWeb (https://github.com/RapidAI/RapidOCRWeb )。這樣以來,RapidOCR倉庫下的各個衍生項目均有自己的獨立倉庫,可以單獨控制發版和維護。這也算是為RapidOCR減負了…

Arduino IDE離線安裝ESP8266板管理工具

文章目錄概要官網地址開發板管理地址安裝ESP8266開發板支持離線安裝額外記錄NODE啟動服務概要 Arduino IDE離線安裝ESP8266板管理工具&#xff0c;在線安裝因為網絡或者https的問題不能安裝 官網地址 Adruino&#xff1a;https://www.arduino.cc/ ESP8266項目&#xff1a;<…

兩款免費數據恢復軟件介紹,Win/Mac均可用

數據已成為我們生活與工作中不可或缺的重要組成部分。無論是珍貴的家庭照片、關鍵的工作文檔&#xff0c;還是重要的學習資料&#xff0c;都以數據的形式存儲在各類設備中。然而&#xff0c;數據丟失的情況卻時常發生&#xff0c;可能是誤操作刪除&#xff0c;可能是設備意外損…

Java開發中敏感信息加密存儲全解析:筑牢數據安全防線

Java開發中敏感信息加密存儲全解析&#xff1a;筑牢數據安全防線 一、引言 1.1 敏感信息存儲的現狀與挑戰 在數字化時代&#xff0c;數據已然成為企業和組織的核心資產之一&#xff0c;而敏感信息的存儲更是重中之重。從日常的用戶登錄密碼、身份證號碼&#xff0c;到金融領域…

list的使用和模擬

(一)list的了解 (1)簡單了解 list的文檔介紹 list是基于雙向鏈表的序列式容器&#xff0c;支持雙向迭代和任意位置的常數時間插入刪除&#xff0c;相比 array、vector 等容器在這類操作上更高效&#xff0c;但不支持隨機訪問&#xff08;訪問需線性遍歷&#xff09;且因額外…

Docker 初學者需要了解的幾個知識點 (五):建容器需要進一步了解的概念

之前在《Docker 初學者需要了解的幾個知識點》幾篇文章里&#xff0c;我們梳理了 Docker 的核心概念&#xff08;如鏡像、容器、網絡等&#xff09;&#xff0c;但在實際搭建 ThinkPHP 容器環境時&#xff0c;又遇到了一些更具體的術語和配置場景。這些內容和實操結合緊密&…

【數據結構】棧的順序存儲(整型棧、字符棧)

【數據結構】棧的順序存儲&#xff08;整型棧、字符棧&#xff09;一、棧的結構定義二、字符棧的初始化、入棧、出棧、判斷是否棧為空、獲取棧頂元素、獲取棧的當前元素個數等操作三、整型棧的初始化、入棧、出棧、判斷是否棧為空、獲取棧頂元素、獲取棧的當前元素個數等操作一…

【大模型實戰】向量數據庫實戰 - Chroma Milvus

在 RAG&#xff08;檢索增強生成&#xff09;場景中&#xff0c;非結構化數據&#xff08;文本、圖像等&#xff09;的高效檢索是核心需求。傳統關系型數據庫難以勝任&#xff0c;而向量數據庫通過將數據轉化為向量、基于相似度快速匹配&#xff0c;成為 RAG 的關鍵支撐。本文聚…

pytorch程序語句固定開銷分析

深入探索PyTorch與Python的性能微觀世界&#xff1a;量化基礎操作的固定開銷 在深度學習的性能優化工作中&#xff0c;開發者通常將目光聚焦于模型結構、算法效率和并行計算策略。然而&#xff0c;在這些宏觀優化的背后&#xff0c;構成我們代碼的每一條基礎語句——無論是PyTo…

ABP VNext + CloudEvents:事件驅動微服務互操作性

ABP VNext CloudEvents&#xff1a;事件驅動微服務互操作性 &#x1f680; &#x1f4da; 目錄ABP VNext CloudEvents&#xff1a;事件驅動微服務互操作性 &#x1f680;一、引言 ??? TL;DR&#x1f4da; 背景與動機&#x1f3d7;? 整體架構圖二、環境準備與依賴安裝 &am…

軟件測試測評公司關于HTTP安全頭配置與測試?

瀏覽器和服務器之間那幾行看不見的HTTP安全頭配置&#xff0c;往往是抵御網絡攻擊的關鍵防線。作為軟件測試測評公司&#xff0c;我們發現超過六成的高危漏洞源于安全頭缺失或誤配。別小看這些響應頭&#xff0c;它們能直接掐斷跨站腳本、點擊劫持、數據嗅探的攻擊路徑。五條命…

Mysql集成技術

目錄 mysql的編譯安裝與部署 1.編譯安裝mysql 2.部署mysql mysql主從復制 什么是mysql主從復制&#xff1f; 1.配置master 2.配置slave 3.存在數據時添加slave2 4.GTID模式 什么是GTID模式&#xff1f; 配置GTID 5.延遲復制 6.慢查詢日志 核心作用 開啟慢查詢日志…