gosky

前端怎么在页面之间传输大参数?

  •  
  •   gosky · Jul 17, 2024 · 3912 views
    This topic created in 841 days ago, the information mentioned may be changed or developed.
    比如
    用户在一个页面写了一个帖子。帖子内容可能有几百甚至上千字
    发表时,跳转到另一个页面,在新页面把帖子提交给后端

    当前其中一个办法是交给后端保存,把后端给的 id 作为 url 参数传给新页面。但这里不考虑后端
    如果是全部作为 url 参数,url 参数可能受限
    一个方法是存到本地缓存,新页面取本地缓存,再删本地缓存
    不知道还有没有更好的办法?

    环境是微信小程序
    写代码的本是后端程序员,最近开始试着写前端
    21 replies  •  2024-07-17 16:31:52 +08:00
    FrankFang128
    FrankFang128
    Jul 17, 2024
    1
    postMessage
    tool2dx
    tool2dx
    Jul 17, 2024
    2
    一般都是 postMessage ,接收方写 window.addEventListener('message', (event) => {});
    dumbass
    dumbass
    Jul 17, 2024❤️1
    3
    “发表时,跳转到另一个页面,在新页面把帖子提交给后端”,为什么不提交后再跳转页面?
    dumbass
    dumbass
    Jul 17, 2024❤️4
    4
    你标题最好改成微信小程序,不然大家给的解决方案未必适用。

    https://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html



    微信小程序有提供页面通信 api
    superedlimited
    superedlimited
    Jul 17, 2024 via iPhone
    5
    微信小程序用 event channel
    estk
    estk
    Jul 17, 2024 via iPhone
    6
    mobx 等状态管理?
    sessionstorage ?
    wanguorui123
    wanguorui123
    Jul 17, 2024
    7
    localstorage
    windliang
    windliang
    PRO
    Jul 17, 2024 via Android
    8
    数据挂到 app 实例上
    michaelluang
    michaelluang
    Jul 17, 2024
    9
    创建一个对象实例,在不同页面中引用这个对象实例。
    ```
    // postModel.js
    class PostModel {
    constructor() { this.post = ''; }
    get post() { return this._post; }
    set post(post) { this._post = post; }
    }
    const postData = new PostModel();
    export default postData;

    // pageA
    import postData from './postModel.js';
    postData.post = 'new post';

    // pageB
    import postData from './postModel.js';
    const post = postData.post;
    ```
    duanxianze
    duanxianze
    Jul 17, 2024
    10
    存到本地就好了,简单方便,不用想那么多
    duanxianze
    duanxianze
    Jul 17, 2024
    11
    再补充,不仅简单方便,而且易于跨平台,还易维护,哪怕忘了删也没事,前端不差这一点空间
    wxrbw555
    wxrbw555
    Jul 17, 2024
    12
    @windliang #8 +1
    LHRUN
    LHRUN
    Jul 17, 2024
    13
    方案太多了, 自带的有 event channel , 或者自己写一个公用的方法,或者存到 app 或者本地都行,看你们的习惯
    zhtyytg
    zhtyytg
    Jul 17, 2024
    14
    提交还得先跳转一次页面? kidding?
    daysv
    daysv
    Jul 17, 2024
    15
    在某些情况,比如 app 内,localstorage 加定时器也能凑合。
    hoshizukiko
    hoshizukiko
    Jul 17, 2024
    16
    我这是有个公用的 js 类专门处理页面传递.
    跳转的时候存,到了下一个页面的 onload 之类的地方取并且删除就行了
    yKXSkKoR8I1RcxaS
    yKXSkKoR8I1RcxaS
    Jul 17, 2024
    17
    localstorage 最完美的办法,还可以和自动保存兼容。
    otakustay
    otakustay
    Jul 17, 2024
    18
    sessionStorage 吧,这种数据用 localStorage 还是有点不太合适?
    nekochyan
    nekochyan
    Jul 17, 2024
    19
    如果是同一个小程序,挂载 APP 实例上就好了,类似于全局变量;如果是跳转到其他小程序,需要用到官方 API
    emws31
    emws31
    Jul 17, 2024
    20
    在 h5 碰到这种问题了。localstorage 有 5M 存储上限,这种大参数不合适。找个压缩工具压一下再存入 localstorage ,或者使用 9 楼的方案比较好。
    Vegetable
    Vegetable
    Jul 17, 2024
    21
    我是真的很难理解为什么前端们会有让后端存页面状态这种想法。
    我是真的遇到过,要求后端把上一个页面提交的数据,再下一个页面返回过来这种前端。
    最经典的就是把什么 checked:true, idx:1 这种莫名其妙的属性一起发给后端让后端保存。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2739 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 13:59 · PVG 21:59 · LAX 05:59 · JFK 08:59
    ♥ Do have faith in what you're doing.