-
Notifications
You must be signed in to change notification settings - Fork 26
Open
Description
Store.js
import { action, observable } from 'mobx-miniprogram';
export const userStore = observable({
/** 用户信息 */
userInfo: wx.getStorageSync(STORAGE_KEY.USER_INFO) || '',
updateUserInfo: action(function (userInfo) {
this.userInfo = userInfo;
wx.setStorageSync("USER_INFO", userInfo);
})})1.账号 A: 登录成功获取到用户信息存储到 userInfo,个人中心显示的是 A 的信息
this.storeBindings = createStoreBindings(this, {
store: userStore,
fields: ['userInfo'],
});2.当 A 账户切换到分包页面的时候,如果分包页面使用了 storeBindings 退出登录了,更新了 userInfo 为 ''
storeBindings: {
store: userStore,
fields: ['userInfo'],
},3.账号 B:登录之后拿到的信息还是账号 A 的
登出部分代码:
export function loginOut(exit = true) {
userStore.updateUserInfo('');
}Storage 里面的值是最新的。主包界面,调用了userInfo 之后,进入到分包调用了之后就出现这样的问题了。
MobX 在多个组件/页面同时绑定同一个 observable 字段时,响应式追踪会混乱:
- 第一个绑定:✅ 正常工作
- 第二个绑定:
⚠️ 可能工作 - 第三个绑定:❌ 开始混乱
- 第四个及以上:❌ 完全失效
将页面、自定义组件和 store 绑定有两种方式: behavior 绑定 和 手工绑定 。
页面使用了 behavior 绑定的时候会出现混乱,也就是步骤 2 的时候,测试中发现使用了 behavior的页面,就出现了上述现象。
Metadata
Metadata
Assignees
Labels
No labels