国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

微信小程序--詳情頁(yè)的推薦位置繼續(xù)打開(kāi)詳情頁(yè);返回之后分享等數(shù)據(jù)不正確問(wèn)題

idealcn / 1465人閱讀

摘要:?jiǎn)栴}背景分享的數(shù)據(jù)來(lái)源當(dāng)前在維護(hù)的小程序項(xiàng)目使用開(kāi)發(fā)分享的數(shù)據(jù)都是通過(guò)接口請(qǐng)求后臺(tái)的形式獲得然后存在了數(shù)據(jù)的對(duì)象中類似定義分享數(shù)據(jù)分享數(shù)據(jù)獲取分享數(shù)據(jù)賦值后臺(tái)返回的分享數(shù)據(jù)當(dāng)前商品的唯一值使用分享數(shù)據(jù)來(lái)自頁(yè)面內(nèi)轉(zhuǎn)發(fā)按鈕問(wèn)題的發(fā)生在大部分

問(wèn)題背景 -- 分享的數(shù)據(jù)來(lái)源

當(dāng)前在維護(hù)的小程序項(xiàng)目使用wepy開(kāi)發(fā);分享的數(shù)據(jù)都是通過(guò)接口請(qǐng)求后臺(tái)的形式獲得;然后存在了數(shù)據(jù)data的對(duì)象中;類似

定義分享數(shù)據(jù)
data = {
    shareData: "", // 分享數(shù)據(jù)
    }
獲取分享數(shù)據(jù)
tip.getShareDataReci(res => {
    that.shareData = res; // 賦值后臺(tái)返回的分享數(shù)據(jù)
    that.$apply();
  }, curCode); // curCode當(dāng)前商品的唯一code值
使用分享數(shù)據(jù)
onShareAppMessage(res) {
  let that = this;
  if (res.from === "button") {
    // 來(lái)自頁(yè)面內(nèi)轉(zhuǎn)發(fā)按鈕
  }
  return {
    title: that.shareData.title,
    imageUrl: that.shareData.img,
    path: that.shareData.path,
    success: function(res) {
        ...
    }
}    
    
問(wèn)題的發(fā)生

在大部分的電商網(wǎng)站都有類似的情況;在一個(gè)商品List中點(diǎn)擊進(jìn)入某一個(gè)商品詳情A;然后在詳情A的頁(yè)面中又會(huì)有推薦的商品;這個(gè)時(shí)間點(diǎn)擊進(jìn)入商品詳情B;點(diǎn)擊分享(不區(qū)分右上角...分享和自己添加的分享按鈕);分享的數(shù)據(jù)是自己存data里面的數(shù)據(jù);也都是對(duì)的;關(guān)鍵的操作來(lái)了;這個(gè)時(shí)候返回商品A(不區(qū)分右滑返回和左上角返回鍵和物理返回鍵);點(diǎn)擊分享;會(huì)發(fā)現(xiàn)分享的數(shù)據(jù)仍然是商品B的信息~

問(wèn)題的解決 1. 出棧的解決方式

在商品詳情A的推薦位置;點(diǎn)擊的時(shí)候使用redirect出棧的方式去打開(kāi)詳情B;這個(gè)時(shí)候分享B是正確的;然后返回是不會(huì)到A的;因?yàn)楸恍遁d了;直接從B回到了List;不會(huì)存在回到A之后分享數(shù)據(jù)不正確的問(wèn)題~~
但是這樣的解決方案帶來(lái)的體驗(yàn)是不好的

2. 緩存讀取的方式解決(目前在用的) 2.1 存 -- 將code存緩存

第一步在商品List跳轉(zhuǎn)到商品詳情A的時(shí)候;在A的onluad周期中(返回不會(huì)觸發(fā)該周期)進(jìn)行存儲(chǔ)唯一code值的動(dòng)作

let reciCodeList = wepy.getStorageSync("reciCodeList"); // 定義獲取的code集合
    if (!reciCodeList.length) {
        // 如果之前沒(méi)有code則往新的數(shù)組中添加該code
      wepy.setStorageSync("reciCodeList", [].concat(options.dishCode));
    } else {
        // 如果之前有code(可能在詳情A的推薦位置又進(jìn)入了詳情B;類推)
        // 會(huì)進(jìn)行一個(gè)去重的動(dòng)作;防止出現(xiàn)兩個(gè)一樣的
      let i = utils.inArray(options.dishCode, reciCodeList);
      if (i >= 0) {
        shareData.splice(i, 1);
      }
      // 將可能進(jìn)行去重處理過(guò)的數(shù)據(jù)存緩存
      wepy.setStorageSync("reciCodeList",reciCodeList.concat(options.dishCode));
    }
2.2 改 -- 修改code集合

第二步在商品詳情A的onUnload周期中(頁(yè)面返回動(dòng)作會(huì)觸發(fā)該生命周期;頁(yè)面出棧也會(huì)觸發(fā)到)進(jìn)行修改reciCodeList動(dòng)作;此動(dòng)作是為了能在返回之后拿到正確的code值

onUnload() {
    // 先獲取存儲(chǔ)的code集合
    let reciCodeList = wepy.getStorageSync("reciCodeList");
    // 刪除數(shù)組的最后一項(xiàng)(為了能在返回之后的頁(yè)面拿最后一項(xiàng)即為當(dāng)前正確項(xiàng))
    /* 我是一個(gè)栗子
    在經(jīng)過(guò)onluad以后會(huì)得到
    在A的時(shí)候;存下了A的唯一code值;為reciCodeList = ["A"];
    在B的時(shí)候;累計(jì)存下了B的唯一code值;為reciCodeList = ["A","B"];
    在C的時(shí)候;累計(jì)存下了B的唯一code值;為reciCodeList = ["A","B","C"];
    ...
    當(dāng)觸發(fā)返回的時(shí)候;會(huì)觸發(fā)onUnload函數(shù);這個(gè)時(shí)候去刪除最后一下;會(huì)得到
    在C的時(shí)候;存儲(chǔ)的reciCodeList = ["A","B","C"];
    這個(gè)時(shí)候去返回;并且刪除最后一項(xiàng);得到了
    reciCodeList = ["A","B"]; 并且頁(yè)面回到了B的頁(yè)面
    */
    reciCodeList.pop();
    // 存儲(chǔ)新的集合
    wepy.setStorageSync("reciCodeList", reciCodeList);
  }
2.3 取 -- 取到正確的code

第三步在商品詳情A的onShow周期中(每次頁(yè)面被顯示都會(huì)觸發(fā);返回也是被顯示了)進(jìn)行獲取分享數(shù)據(jù)的動(dòng)作

async onShow() {
    let that = this;
    // 先獲取存儲(chǔ)的code集合
    let reciCodeList = wepy.getStorageSync("reciCodeList");
    if (reciCodeList.length) {
        // 如果存在code值;則拿最后一個(gè)code值為當(dāng)前code值
      let curCode = reciCodeList[reciCodeList.length - 1];
      // 當(dāng)前值去發(fā)送請(qǐng)求;獲得正確的分享數(shù)據(jù)
      tip.getShareDataReci(res => {
        that.shareData = res;
        that.$apply();
      }, curCode);
    }
  }
問(wèn)題的延伸

可能會(huì)出現(xiàn)類似的問(wèn)題;例如當(dāng)前詳情的分享+收藏+不同用戶展示不用信息(下有栗子);都存在返回后數(shù)據(jù)不正確的情況;也可以一并使用這個(gè)方案處理

 // 我是不同用戶展示不用信息的栗子
 // 依然使用前文的 A  B  C (詳情頁(yè)都有登錄的入口)
 A頁(yè)面是未登錄狀態(tài);顯示未登錄狀態(tài)該有的展示信息;不在A頁(yè)面登錄;點(diǎn)擊推薦位置到B頁(yè)面
 B頁(yè)面起初顯示的也是未登錄狀態(tài)下的展示信息;這個(gè)時(shí)候在B頁(yè)面進(jìn)行了登錄;回到A還是未登錄的狀態(tài)
 這個(gè)時(shí)候只需要在A的onShow取一次緩存的用戶信息即可
 that.userInfo = wepy.getStorageSync("userInfo");

這個(gè)是目前微信存在的bug;可先通過(guò)方法規(guī)避開(kāi);等微信修復(fù)了以后就樂(lè)呵呵了~~~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/52013.html

相關(guān)文章

  • 信小程序--詳情頁(yè)推薦位置繼續(xù)打開(kāi)詳情頁(yè)返回之后分享數(shù)據(jù)正確問(wèn)題

    摘要:?jiǎn)栴}背景分享的數(shù)據(jù)來(lái)源當(dāng)前在維護(hù)的小程序項(xiàng)目使用開(kāi)發(fā)分享的數(shù)據(jù)都是通過(guò)接口請(qǐng)求后臺(tái)的形式獲得然后存在了數(shù)據(jù)的對(duì)象中類似定義分享數(shù)據(jù)分享數(shù)據(jù)獲取分享數(shù)據(jù)賦值后臺(tái)返回的分享數(shù)據(jù)當(dāng)前商品的唯一值使用分享數(shù)據(jù)來(lái)自頁(yè)面內(nèi)轉(zhuǎn)發(fā)按鈕問(wèn)題的發(fā)生在大部分 問(wèn)題背景 -- 分享的數(shù)據(jù)來(lái)源 當(dāng)前在維護(hù)的小程序項(xiàng)目使用wepy開(kāi)發(fā);分享的數(shù)據(jù)都是通過(guò)接口請(qǐng)求后臺(tái)的形式獲得;然后存在了數(shù)據(jù)data的對(duì)象中;類似...

    young.li 評(píng)論0 收藏0
  • 信小程序之啟動(dòng)頁(yè)重要性

    摘要:在小程序啟動(dòng)的時(shí)候自動(dòng)登錄,目前沒(méi)獲取用戶信息,所以不需要用戶授權(quán),這個(gè)邏輯放在根目錄下的的方法中。做完之后發(fā)現(xiàn)了一個(gè)很嚴(yán)重的問(wèn)題,就是的方法確實(shí)會(huì)在小程序啟動(dòng)的時(shí)候執(zhí)行,但是首頁(yè)也會(huì)是在文件的中第一個(gè)頁(yè)面也會(huì)同時(shí)執(zhí)行,它不是阻塞的。 啟動(dòng)頁(yè)在APP中是個(gè)很常見(jiàn)的需求,為什么對(duì)于小程序來(lái)說(shuō)也非常重要呢?首先我描述一下我在開(kāi)發(fā)過(guò)程中遇到的一些問(wèn)題以及解決的步驟,到最后為什么要加啟動(dòng)頁(yè),看...

    Alan 評(píng)論0 收藏0
  • 當(dāng)信小程序遇上filter~

    摘要:具體用法其中表示數(shù)組元素的值,表示數(shù)組元素的下標(biāo),表示包含該元素的數(shù)組。這里采用隨機(jī)函數(shù)來(lái)獲取數(shù)組的下標(biāo),函數(shù)是獲取之間的數(shù),函數(shù)是向下取整,這樣就可以隨機(jī)獲取相應(yīng)的下標(biāo)數(shù)。小程序中的模板就很好地幫我們解決了這個(gè)問(wèn)題,并通過(guò)屬性來(lái)實(shí)現(xiàn)調(diào)用。 在微信小程序的開(kāi)發(fā)過(guò)程中,當(dāng)你想要實(shí)現(xiàn)不同頁(yè)面間的數(shù)據(jù)綁定,卻為此抓耳饒腮時(shí),不妨讓微信小程序與filter 來(lái)一場(chǎng)完美的邂逅,相信會(huì)給你帶來(lái)別樣...

    Darkgel 評(píng)論0 收藏0
  • iKcamp出品|全網(wǎng)最新|信小程序|基于最新版1.0開(kāi)發(fā)者工具之初中級(jí)培訓(xùn)教程分享

    摘要:微信小程序課程,面向所有具備前端基礎(chǔ)知識(shí)的同學(xué)官網(wǎng)訪問(wèn)官網(wǎng)更快閱讀全部免費(fèi)分享課程出品全網(wǎng)最新微信小程序基于最新版開(kāi)發(fā)者工具之初中級(jí)培訓(xùn)教程分享。 ?? 微信小程序課程,面向所有具備前端基礎(chǔ)知識(shí)的同學(xué) ?? iKcamp官網(wǎng):http://www.ikcamp.com 訪問(wèn)官網(wǎng)更快閱讀全部免費(fèi)分享課程:《iKcamp出品|全網(wǎng)最新|微信小程序|基于最新版1.0開(kāi)發(fā)者工具之初中級(jí)培訓(xùn)教...

    hersion 評(píng)論0 收藏0
  • iKcamp出品|全網(wǎng)最新|信小程序|基于最新版1.0開(kāi)發(fā)者工具之初中級(jí)培訓(xùn)教程分享

    摘要:微信小程序課程,面向所有具備前端基礎(chǔ)知識(shí)的同學(xué)官網(wǎng)訪問(wèn)官網(wǎng)更快閱讀全部免費(fèi)分享課程出品全網(wǎng)最新微信小程序基于最新版開(kāi)發(fā)者工具之初中級(jí)培訓(xùn)教程分享。 ?? 微信小程序課程,面向所有具備前端基礎(chǔ)知識(shí)的同學(xué) ?? iKcamp官網(wǎng):http://www.ikcamp.com 訪問(wèn)官網(wǎng)更快閱讀全部免費(fèi)分享課程:《iKcamp出品|全網(wǎng)最新|微信小程序|基于最新版1.0開(kāi)發(fā)者工具之初中級(jí)培訓(xùn)教...

    MRZYD 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<