Redux “存放在哪里?”;“当前用户”;全球可访问
状态树中的几乎每个对象都需要具有以下字段:Redux “存放在哪里?”;“当前用户”;全球可访问,redux,Redux,状态树中的几乎每个对象都需要具有以下字段: createdByGuid 创建数据 修改 日期字段很容易添加到动作创建者中。人们似乎一致认为,行动创造者是允许不纯洁的地方,即newdate() 但是当前登录的用户不容易获取,因为这些数据位于状态的另一个部分 举例说明: profile data guid firstname ... media items 0: guid, createdByGuid, ... 1: guid, createdBy
- createdByGuid
- 创建数据
- 修改
newdate()
但是当前登录的用户不容易获取,因为这些数据位于状态的另一个部分
举例说明:
profile
data
guid
firstname
...
media
items
0: guid, createdByGuid, ...
1: guid, createdByGuid, ...
drawings
items
...
在调度媒体添加操作时,我希望操作创建者使用createdById来扩充调度的数据。当前用户需要从profile.data.guid
获取
我不想把国家带入我的行动中。相反,我可以使用thunk通过getState()获取状态。但这似乎是一种获取简单guid常量(此会话的常量)的笨拙方法。当基本上我所有用于向状态添加数据的动作创建者都需要是thunks时,这会变得更加笨拙
我倾向于创建一个单独的全局单例对象来保存此数据,并将此依赖关系引入所有action creator模块。例如,就测试而言,这似乎是一个不那么令人不安的依赖关系
我想大多数Redux用户对于当前用户都有相同的问题。什么是好的解决方案
我在react native中工作,但我想这个问题适用于大多数Redux应用程序。如果有人感兴趣,我会选择单例方式。不是一个真正的单身定义,但它适合我的需要 当用户登录时,我将在异步操作创建者(thunk)中处理此操作。thunk在成功向服务器验证用户后调用setGlobalCurrentUser() 要获得当前用户,我只需从currentUser.js导入currentUserGuid(),而不会陷入依赖地狱 currentUser.js:
let _currentUserGuid;
export function currentUserGuid() {
if(!_currentUserGuid) throw new Error('currentUserGuid:: No logged in user')
return _currentUserGuid;
}
export function setGlobalCurrentUser(user) {
if(user) {
_currentUserGuid = user.get('guid')
} else {
_currentUserGuid = null
}
}
如何通过会话来维护状态,比如“让我保持日志记录”功能?我正在使用Redux。登录用户和访问令牌通过异步存储与Radux存储的其余部分一起保存到磁盘。当存储从磁盘重新水化时,我调用setGlobalCurrentUser,这样我就可以访问userId,而不必从Redux中选择它。。。后来我离开了thunks,我只使用Redux Saga。