Vue3(五)vuex4 & vue-router4

1. 創(chuàng)建router對象

// createRouter方法汗盘,用于創(chuàng)建路由器對象
// createWebHashHistory方法砂吞,用于生成hash模式的路由腿椎,路由地址中包含一個#
// createWebHistory方法,用于生成history模式的路由
import {createRouter,createWebHashHistory} from 'vue-router'

// 創(chuàng)建當前項目中的路由器對象
let router = createRouter({
    //定義路由模式
    history:createWebHashHistory(),
    //定義具體的路由信息
    routes:[
        //每一條路由信息惠遏,配置一個對象
        {
            path:'/',
            name:'home',
            component:()=>import('../views/Home.vue')
        },
        {
            path:'/store',
            name:'store',
            component:()=>import('../views/Store.vue')
        },
        {
            path:'/list/:id',
            props:true,
            name:'list',
            component:()=>import('../views/List.vue')
        },
        {
            path:'/news',
            name:'news',
            component:()=>import('../views/News.vue')
        },
        {
            path:'/page1',
            name:'page1',
            component:()=>import('../views/Page1.vue')
        },
        {
            // 注意:不可以寫通配符*
            // path:'*',
            path:'/:pathMatch(.*)*',
            name:'error404',
            component:()=>import('../views/Error404.vue')
        }
    ]
})

export default router

2. 使用router

//useRouter方法蓬坡,返回當前項目中的路由器對象
//useRoute方法,返回當前路由信息對象
import {useRouter,useRoute} from 'vue-router'
//返回當前項目中的路由器對象
let $router = useRouter()
//獲取當前路由信息
let $route = useRoute()
//通過props片迅,也能獲取都路由參數(shù)
props:['id']
//監(jiān)聽路由參數(shù)id
watch(()=>$route.params.id,(nval)=>{
    //清空數(shù)組
    showList.splice(0)
    //向數(shù)組中添加最新的數(shù)據(jù)
    showList.push(...list.filter(r=>r.typeId==$route.params.id))
},{
    //一上來残邀,先執(zhí)行一次
    immediate:true
})

3. 創(chuàng)建store對象

// 從vuex中導入createStore方法,該方法柑蛇,用于創(chuàng)建全局狀態(tài)管理對象
import { createStore } from 'vuex'
// 導入汽車模塊
import car from './modules/car.js'
// 創(chuàng)建一個全局狀態(tài)管理對象
let store = createStore({
    //定義狀態(tài)
    state:{
        firstName:'張',
        lastName:'三'
    },
    //定義圍繞狀態(tài)的計算屬性
    getters:{
        fullName(state){
            return state.firstName+'.'+state.lastName
        }
    },
    //定義同步方法
    mutations:{
        updateFirstName(state,val){
            state.firstName = val
        },
        updateLastName(state,val){
            state.lastName = val
        }
    },
    //定義異步方法
    actions:{
        updateFirstName(store,val){
            setTimeout(() => {
                store.commit('updateFirstName',val)
            }, 1000);
        },
        updateLastName(store,val){
            setTimeout(() => {
                store.commit('updateLastName',val)
            }, 1000);
        }
    },
    //模塊
    modules:{
       car
    }
})

//導出全局狀態(tài)管理對象
export default store

4. 使用store

//useStore方法芥挣,返回當前項目中的全局狀態(tài)管理對象
import { useStore } from "vuex";
// 獲取全局狀態(tài)管理對象
let $store = useStore();
let firstName = computed(() => {
    return $store.state.firstName;
});
let lastName = computed(() => {
    return $store.state.lastName;
});
let fullName = computed(() => {
    return $store.getters.fullName;
});
let carName = computed(() => {
    return $store.state.car.carName;
});
let address = computed(() => {
    return $store.state.car.address;
});
let carInfo = computed(() => {
    return $store.getters["car/carInfo"];
});
function updateFirstName() {
    //調(diào)用mutations里面的方法,修改姓
    $store.commit("updateFirstName", "李");
}
function updateLastName() {
    //調(diào)用actions里面的方法耻台,修改名
    $store.dispatch("updateLastName", "四");
}
function updateCarName() {
    //調(diào)用mutations里面的方法空免,修改車名
    $store.commit("car/updateCarName", "賓利");
}
function updateCarAddress() {
    //調(diào)用actions里面的方法,修改地址
    $store.dispatch("car/updateCarAddress", "英國");
}

5. 注冊

// 導入當前項目中創(chuàng)建的全局狀態(tài)管理對象
import store from './store'
// 導入當前項目中創(chuàng)建的路由器對象
import router from './router'
// 使用createApp方法創(chuàng)建一個Vue實例盆耽,該方法的參數(shù)是App組件蹋砚,表示渲染App組件
// use方法扼菠,用于給當前vue實例添加功能
// mount方法,用于將渲染后的內(nèi)容坝咐,掛載到指定的容器中
createApp(App).use(store).use(router).mount('#app')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末娇豫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子畅厢,更是在濱河造成了極大的恐慌冯痢,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件框杜,死亡現(xiàn)場離奇詭異浦楣,居然都是意外死亡,警方通過查閱死者的電腦和手機咪辱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門振劳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人油狂,你說我怎么就攤上這事历恐。” “怎么了专筷?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵弱贼,是天一觀的道長。 經(jīng)常有香客問我磷蛹,道長吮旅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任味咳,我火速辦了婚禮庇勃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘槽驶。我一直安慰自己责嚷,他們只是感情好,可當我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布掂铐。 她就那樣靜靜地躺著罕拂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪堡纬。 梳的紋絲不亂的頭發(fā)上聂受,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天,我揣著相機與錄音烤镐,去河邊找鬼蛋济。 笑死,一個胖子當著我的面吹牛炮叶,可吹牛的內(nèi)容都是我干的碗旅。 我是一名探鬼主播渡处,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼祟辟!你這毒婦竟也來了医瘫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤旧困,失蹤者是張志新(化名)和其女友劉穎醇份,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吼具,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡僚纷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拗盒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怖竭。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖陡蝇,靈堂內(nèi)的尸體忽然破棺而出痊臭,到底是詐尸還是另有隱情,我是刑警寧澤登夫,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布广匙,位于F島的核電站,受9級特大地震影響悼嫉,放射性物質(zhì)發(fā)生泄漏艇潭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一戏蔑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鲁纠,春花似錦总棵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至捍壤,卻和暖如春骤视,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鹃觉。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工专酗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盗扇。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓祷肯,卻偏偏與公主長得像沉填,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子佑笋,可洞房花燭夜當晚...
    茶點故事閱讀 45,876評論 2 361

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