国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

vue兩組件間值傳遞 $router.push實(shí)現(xiàn)方法

2024-05-06 15:39:29
字體:
供稿:網(wǎng)友

兩組件間傳值,可能包含多種情況,有父子組件和非父子組件,對(duì)于父子組件網(wǎng)上有很詳細(xì)的方法講解,但非父子組件傳值有用bus總線,還有一些其他方法,其中的使用路由跳轉(zhuǎn)的方法講解太過簡潔,難以理解。因?yàn)槭枪卷?xiàng)目,采用的是公司封裝的UI框架,但基本上還是采用vue框架,ts編寫。所以一些樣式結(jié)構(gòu)可能沒有參考價(jià)值,但我會(huì)講解清楚每一部分作用,主要是路由跳轉(zhuǎn)部分的代碼實(shí)現(xiàn)。

首先,需求如下圖,樹狀列表每一項(xiàng)有一個(gè)編輯按鈕,點(diǎn)擊按鈕之后跳轉(zhuǎn)到另一個(gè)路由頁面,會(huì)將樹狀列表中每一項(xiàng)數(shù)據(jù)帶過來。

vue文件部分:

<tree  :data="dataList"  node-key="id"  default-expand-all  :expand-on-click-node="false">  <span class="custom-tree-node" slot-scope="{ node, data }" :class="$style.list">    <span :class="$style.listText">{{ node.label }}</span>    <span :class="$style.listBtn">      <button        :class="$style.btn"        type="text"        size="mini"        @click="() => edit(data)">      </button>    </span>  </span></tree><router-view></router-view>

這是封裝好的樹狀列表,使用 scoped slot 會(huì)傳入兩個(gè)參數(shù) node 和 data ,分別表示當(dāng)前節(jié)點(diǎn)的 Node 對(duì)象和當(dāng)前節(jié)點(diǎn)的數(shù)據(jù)。當(dāng)點(diǎn)擊button會(huì)路由跳轉(zhuǎn)頁面顯示在 <router-view>中。

那我們先來看一下ts中edit這個(gè)方法是怎么寫的。

edit(info: Idata) {  this.$router.push({    name: `ListEdit`,    query: {      label: info.label,      scene: info.scene,    },  });},

終于看到主角 $router.push ,它會(huì)帶兩個(gè)參數(shù),name表示即將跳轉(zhuǎn)到的路由名字,還有一個(gè)參數(shù)可以是query,也可以是params,它們的區(qū)別簡單來說,就相當(dāng)于 get 和 post ,query == get ,params == post,query 會(huì)把攜帶的參數(shù)顯示在 url 中。那query中的參數(shù)就是所需要攜帶的參數(shù),那這一步總體來說就意味著跳轉(zhuǎn)到ListEdit這個(gè)路由頁面,并攜帶label、scene 這兩個(gè)參數(shù)。

至于其中的 info:Idata 這樣的寫法是因?yàn)閠s,ts接口了解一下。

現(xiàn)在編輯按鈕這部分內(nèi)容ok了,它確定了要跳轉(zhuǎn)的地方還有需要攜帶的參數(shù),那么我們這個(gè)ListEdit路由頁面就應(yīng)該做好準(zhǔn)備接收人家?guī)淼膮?shù)呀。在頁面創(chuàng)建期間和路由發(fā)生改變期間,都會(huì)有一個(gè)傳值的動(dòng)作,那就再created鉤子函數(shù)和監(jiān)聽路由函數(shù)中寫入代碼。

created() {  const {label= "", scene= ""} = this.$route.query;  this.form = {    name: label.toString(),    initScene: scene.toString(),  };},watch: {  $route(to, from) {    if (to.path === "/list/listEdit") {      const {label= "", scene= ""} = to.query;      this.form = {        name: label.toString(),        initScene: scene.toString(),      };    }  },},            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 榆林市| 安陆市| 关岭| 湄潭县| 铜陵市| 济阳县| 保康县| 中阳县| 莒南县| 申扎县| 应用必备| 应城市| 桦川县| 莱州市| 安陆市| 盱眙县| 克东县| 白山市| 合肥市| 沁水县| 乳山市| 滁州市| 齐齐哈尔市| 西和县| 祁阳县| 武义县| 景洪市| 杭锦旗| 周宁县| 小金县| 曲阳县| 泗洪县| 乐陵市| 临安市| 余干县| 宁陵县| 吴桥县| 那坡县| 嵊州市| 兴义市| 延庆县|