vue3项目之Vuex 获取动态数据流程

Vuex 获取动态数据流程

我们进入页面时,发送一个请求,将请求得到的数据存储在 vuex 中,并在组件中使用 vuex 中的数据

这个请求可以用真实接口获取,也可以用 mock 接口获取(mockjs 使用方法在 vue2_project

注:这里还是客户端获取 vuex 数据的方法!! 服务端获取在下一节

  • 请求接口 api/home/index.ts
import { http } from '@/utils/http'
import mockRequests from '@/mock/mockRequests'


// 真实接口
export const reqgetRoomList = function () {
    return http.httpRequestGet(`http://110.42.184.111/api/room/room/getRoomList?pageNo=1&pageSize=30`, {});
}


// mock 接口(需要提起封装好 mock 请求)
// export const reqgetRoomList = function () {
//     return mockRequests.get('/roomList');
// }
  • vuex 获取数据 store/index.ts
state: {
    roomList: []
},

actions: {
    async getRoomList({ state }) {
        let result = await reqgetRoomList()
        console.log(result);


        if (result.code == '000000') {
            state.categoryList = result.data
        } else {
            ElMessage.error('获取房屋列表失败')
        }
    }
},
  • 组件中调用 dispath
// 组件中简化使用
let roomList = computed(() => store.state.roomList)


// 通常在 onMounted 中发送请求
onMounted(async function () {
    await store.dispatch('getRoomList')
})
  • **entry-client.ts 中调用:**主要用于初始化 vuex 中的数据,集中在这里定义,特别是用到了 浏览器的 api
router.beforeEach(async function (to, from, next) {

    // 打开所有仓库
    let result = await airbnbDB.openStore(stores, 'id')
    if (result) console.log('所有对象仓库打开成功');


    // 查询并保存全局语言
    let resultLang = await fetchLanguageApi()
    store.commit('fetchLanguage', resultLang)


    // 获取登录状态
    let status = localStorage.getItem('usertoken') ? 1 : 0
    store.commit('getUserStatus', status)

    next()

}) 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cocoonne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值