頁面跳轉(zhuǎn)時在URL中傳遞數(shù)組的正解!

在開發(fā)過程中譬挚,遇到了從一個頁面A跳轉(zhuǎn)到另一個頁面B,需要在url參數(shù)部分傳遞一些數(shù)據(jù)給B頁面盐须,其中某個參數(shù)為數(shù)組的需求漆腌。上網(wǎng)搜了搜,沒有找到可行方法闷尿,最后自己研究出來了,給大家分享一下晓勇。

本文包含兩種數(shù)組的傳遞方法灌旧。

一、簡易數(shù)組

例如在pageA要傳遞這樣一個數(shù)據(jù)給pageB:

const obj= {
    paramA: '1',
    paramB: 'happy',
    paramC: ['alice', 'bob', 'jack'],
};

在pageA使用該方法進(jìn)行頁面跳轉(zhuǎn):

import { routerRedux } from 'dva/router';
import queryString from 'querystring';

routerRedux.push({
    pathname: `/test/pageB`,
    search: queryString.stringify(obj),
})

預(yù)期能夠得到這樣的url:

http://localhost:8000/test/pageB?paramA=1&paramB=happy&paramC=['alice', 'bob', 'jack']

結(jié)果發(fā)現(xiàn)是這樣的:

http://localhost:8000/test/pageB?paramA=1&paramB=happy&paramC=alice&paramC=bob&paramC=jack

描融?衡蚂??年叮?哈哈哈哈玻募,是不是很懵?
怎么避免這種情況呢七咧,我們可以繞一圈:
將數(shù)組轉(zhuǎn)成字符串,在B頁面獲取到參數(shù)后再轉(zhuǎn)化成數(shù)組:

pageA:
   const obj= {
      paramA: '1',
      paramB: 'happy',
      paramC: ['alice', 'bob', 'jack'].join(), // 得到:alice,bob,jack
    };
    dispatch(
      routerRedux.push({
        pathname: `/test/pageB`,
        search: queryString.stringify(obj),
      })
    );

就能得到一個這樣的(alice,bob,jack中的逗號轉(zhuǎn)義成了%2C):

http://localhost:8000/test/pageB?paramA=1&paramB=happy&paramC=alice%2Cbob%2Cjack

然后在pageB轉(zhuǎn)化成數(shù)組即可:

const { location: { search } } = this.props;
const searchItem = queryString.parse(search.substring(1)); // {paramA: "1", paramB: "happy", paramC: "alice,bob,jack"}
// substring(1)是為了把 ? 截掉爆存,如果直接queryString.parse(search)得到的會是{?paramA: "1", paramB: "happy", paramC: "alice,bob,jack"}

const paramC = searchItem.paramC.split(','); // 得到想要的數(shù)組["alice", "bob", "jack"]

二蝗砾、對象數(shù)組

對于更加復(fù)雜的對象數(shù)組携冤,就沒法像上面一樣了闲勺,但是思路還是一樣的。我們可以將對象整個轉(zhuǎn)化為json睁蕾。具體如下:

pageA:
const obj= {
    paramA: '1',
    paramB: 'happy',
    paramC: JSON.stringify([
          {name: 'alice', age: 12},
          {name: 'bob', age: 18},
          {name: 'jack', age: 15},
    ]),
};
dispatch(
   routerRedux.push({
        pathname: `/test/pageB`,
        search: queryString.stringify(obj),
   })
);

pageB:
const { location: { search } } = this.props;
const searchItem = queryString.parse(search.substring(1));
const paramC = JSON.parse(searchItem.paramC);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末子眶,一起剝皮案震驚了整個濱河市序芦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌渴杆,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異某筐,居然都是意外死亡比搭,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門南誊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來身诺,“玉大人,你說我怎么就攤上這事抄囚∶股模” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵幔托,是天一觀的道長穴亏。 經(jīng)常有香客問我,道長柑司,這世上最難降的妖魔是什么迫肖? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任攒驰,我火速辦了婚禮,結(jié)果婚禮上故爵,老公的妹妹穿的比我還像新娘玻粪。我一直安慰自己隅津,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布劲室。 她就那樣靜靜地躺著伦仍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪很洋。 梳的紋絲不亂的頭發(fā)上充蓝,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音喉磁,去河邊找鬼谓苟。 笑死,一個胖子當(dāng)著我的面吹牛协怒,可吹牛的內(nèi)容都是我干的涝焙。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼孕暇,長吁一口氣:“原來是場噩夢啊……” “哼仑撞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起妖滔,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤隧哮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后座舍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體近迁,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年簸州,在試婚紗的時候發(fā)現(xiàn)自己被綠了鉴竭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡岸浑,死狀恐怖搏存,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情矢洲,我是刑警寧澤璧眠,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站读虏,受9級特大地震影響责静,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盖桥,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一灾螃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧揩徊,春花似錦腰鬼、人聲如沸嵌赠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姜挺。三九已至,卻和暖如春彼硫,著一層夾襖步出監(jiān)牢的瞬間炊豪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工拧篮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留词渤,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓他托,卻偏偏與公主長得像掖肋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子赏参,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容