鍍金池/ 問答/HTML/ vue組件復(fù)用,如何根據(jù)不同的router請求不同的接口?

vue組件復(fù)用,如何根據(jù)不同的router請求不同的接口?

項(xiàng)目開發(fā)中有很多地方的模塊內(nèi)容是相同或者高度相似的,但是路由來源不一樣,在使用組件時(shí)怎么在組件中使用不同的接口?或者給相同的接口傳不同的值?
我現(xiàn)在的做法是這樣的:
在mounted中根據(jù)$route.name做判斷,根據(jù)不同的來源請求不同的接口,或者是給不同的接口傳不同的值,這樣也能達(dá)到預(yù)期的效果,但總是感覺不是特別好。請問大神有沒有更好的做法?

回答
編輯回答
卟乖

個(gè)人覺得 使用router傳遞參數(shù)params或者query,拼接請求地址就ok,如果組件解構(gòu)只有一層 props實(shí)現(xiàn)不太現(xiàn)實(shí)

2017年9月28日 05:39
編輯回答
胭脂淚

個(gè)人認(rèn)為首先你要統(tǒng)計(jì)一下你所有共用組件的接口的共性和異性,共性的寫死在組件就行了,異性的就在父組件使用prop傳值傳過來,如:

補(bǔ)充回答

// api.js
const activityApi = {
    // 獲取活動(dòng)列表
    getActivityList(params) {
        return ajax.jsonp(url, params);
    },
    // 獲取有活動(dòng)的游戲列表
    getActivityGameList(params) {
        return ajax.jsonp(url, params);
    },
}
export default activityApi;

父組件

<son-component :apiName="'getActivityList'" :params="params"></son-component>

子組件

import activityApi from 'activityApi.js';
export default {
    props:{
        apiName:{ // 接口名稱
            type:String,
            default:'getActivityList' // 此處可以填組件中共用接口最多的接口地址
        },
        params:{ // 接口參數(shù)
            type:Object,
            default:{}
        }
    },
    mounted(){
        this.getData();
    },
    methods:{
        getData(){
            activityApi[this.apiName](this.params).then((res)=>{
  
            })
        }
    }
}
2017年11月28日 00:31
編輯回答
朕略傻

也可以把url,參數(shù)key 都寫在router的路由配置里面啊

2017年6月20日 09:07
編輯回答
墨小白

你可以把接口路徑字符串當(dāng)必填參數(shù)傳給組件,然后組件中接口請求設(shè)計(jì)成獲取prop中的字符串拼接

2017年1月30日 13:12
編輯回答
忘了我

使用 prop 傳入url即可。

如果想定制型更強(qiáng),可以要求傳入一個(gè)Promise

2018年5月27日 00:15
編輯回答
葬憶

同一個(gè)組件路由不同的話,用
watch:{

$router(){}

}
就好了

2017年3月4日 05:03
編輯回答
安于心

組件暴露一個(gè)url的接口
使用組件的時(shí)候就可以傳入不同的url

2017年3月13日 10:07