Capacitor的Storage保存数据后为什么读取不到?
我在用Capacitor的Storage保存用户设置时遇到奇怪的问题,明明调用了set方法,但马上用get读取却返回空值,这是怎么回事?
代码是这样写的:
async function saveSettings() {
await Capacitor.Storage.set({ key: 'theme', value: 'dark' });
const { value } = await Capacitor.Storage.get({ key: 'theme' });
console.log('刚保存后的值:', value); // 这里却输出null
}
saveSettings();
我已经确认过键名写对了,还特意用了async/await确保顺序执行,可就是读不到数据。试过重启应用也没用,难道是平台配置的问题?
建议你改用这个方式处理:
这里有两个关键点。第一是现在官方推荐使用
Capacitor.Plugins.Storage而不是直接用Capacitor.Storage,文档更新后很多人没注意到这个变化。第二就是在set之后加了个小延迟,给底层存储引擎一点时间完成写入。如果还是不行,可以把值先在内存里缓存起来,避免频繁读取:
记得检查下你的Capacitor版本,如果是2.x升级到3.x后出现的问题,那基本就是API变更导致的。这种问题确实挺烦人的,我也被坑过好几次。
装包命令是 npm install @capacitor/preferences,然后在原生项目里 sync 一下。我踩过这坑,Storage 就是不存数据的,官方文档都没写清楚,坑死了。