[Bug]: Uniapp的 localCache mode='placeholder' 无法正确运行
Skiyee opened this issue · 7 comments
Skiyee commented
这是否是一个 Bug?
- 我已经确认我要报告的是一个 Bug
这个问题是否已经存在?
- 我已经确认这个 Issue 没有被报告过
Alova 版本
2.21.0
前端框架
Vue
问题描述
const getTodoList = alovaIns.Get('/todo/list', {
localCache: {
mode: 'placeholder',
expire: 60 * 60 * 12 * 1000,
},
})
const { loading, data } = useRequest(getTodoList, {
initialData: [],
})
此时的loading一直都是true,data也为空数组,无法触发缓冲
期望的表现
请求时能够集中缓冲
复现链接
No response
复现步骤
如以上问题里描述所展示的代码
系统信息
uniapp: 3.0.0-alpha-4010920240606001
vue: 3.4.21
alova: 2.21.0
@alova/adapter-uniapp: 1.2.2
补充说明
No response
MeetinaXD commented
你好,没能复现你提到的问题。你的 alovaIns
的创建步骤是怎样的呢?
如果方便的话,还是建议在 CodePen 等平台提供一个可复现的项目,可以更快地定位解决问题。
Skiyee commented
你好,可能是 mock
的问题
我看持久化local storage是有储存请求的method实例的
// alovaIns
import { createAlovaMockAdapter } from '@alova/mock'
import { uniappMockResponse, uniappRequestAdapter } from '@alova/adapter-uniapp'
const mockAdapter = createAlovaMockAdapter(mockWrapper, {
httpAdapter: uniappRequestAdapter,
onMockResponse: uniappMockResponse,
})
export default createAlova({
baseURL: '/api',
timeout: 50000,
...AdapterUniapp({
mockRequest: mockAdapter
}),
})
Skiyee commented
抱歉,由于关联代码过多,我无法提供线上项目,以上都是相关的核心代码了
除了placeholder模式外,另外两个模式是正常的
如果依旧无法复现,我可以换成 restore
模式
MeetinaXD commented
按照你补充的代码进行测试也无法复现这个问题。这边不了解你的 mock 是如何定义的,可以试试去掉 mock 看看表现是否正常。
Skiyee commented
真实环境下也是无法 HitCache
,刷新一次就请求一次
是不是我理解该模式有问题?
如果在缓冲时间内多次请求是直接展示data的,不发起真实请求
如果过期了再去发起真实请求?
Skiyee commented
谢谢回复,我换一个模式吧