vbenjs / vite-plugin-mock

A mock plugin for vite.use mockjs.
MIT License
621 stars 96 forks source link

两个或多个mock请求,如何共享同一个mock数据 #32

Open hooray opened 3 years ago

hooray commented 3 years ago

场景如下: 我有一个列表页和一个详情页,列表页的数据通过mock动态生成,点击列表页编辑按钮的时候,通过mock数据里的某个唯一字段(比如id),去查找该mock列表里的这一条记录,并返回该条数据

问题: 列表页mock的数据无法共享给详情页使用,详情页会获取全新的列表mock数据,导致通过id查找不到对应数据,伪代码如下:

const managerList = []
for (let i = 0; i < 50; i++) {
    managerList.push({
        id: '@id',
        name: '@cname',
        mobile: /1\d{10}/
    })
}
export default [
    {
        url: '/mock/manager/list',
        method: 'get',
        response: () => {
            return {
                error: '',
                status: 1,
                data: {
                    list: managerList,
                    total: list.length
                }
            }
        }
    },
    {
        url: '/mock/manager/detail',
        method: 'get',
        response: ({ query }) => {
            let info = managerList.filter(item => item.id == query.id)
            return {
                error: '',
                status: 1,
                data: info[0]
            }
        }
    }
]

目前的解决办法: 只能引入mockjs,将mock数据在请求前就生成好固定的数据内容,而不是通过vite-plugin-mock去处理

const Mock = require('mockjs')

const managerList = []
for (let i = 0; i < 50; i++) {
    managerList.push(Mock.mock({
        id: '@id',
        name: '@cname',
        mobile: /1\d{10}/
    }))
}

...

不知道有没有更好的解决办法

anncwb commented 3 years ago

目前暂不支持这个,

andycao commented 3 years ago

每次请求mockjs都会生成一份新的数据,所以也只能提前生成好,detail中筛选