从讨论
here看来,Redux reducer的状态似乎应该保留在数据库中.
在这种情况下,用户认证的工作原理如何?
不会创建一个新的状态对象来替代数据库中的每个用户(及其应用程序状态)创建和编辑的先前状态?
在前端使用所有这些数据并不断更新数据库中的状态是否有效?
编辑:我创建了一个example Redux auth project,这也恰好体现了通用的Redux,并使用Redux,Socket.io和RethinkDB实时更新.
解决方法
From the discussion here it seems that the state of Redux reducers should be persisted in a database.
要坚持不懈的国家,这可能不是Redux的关切.它更适用于应用程序逻辑.
如果应用程序发生了某些事情,例如数据上传到服务器,显然您需要保存状态(或状态切片到服务器).
由于网络呼叫是异步的,而Redux是同步的 – 您需要引入额外的中间件,如redux-thunk或redux-promise.
作为注册示例,您可能需要该操作,
export function creatingAccount() { return { type: 'CREATING_ACCOUNT' }; } export function accountCreated(account) { return { type: 'ACCOUNT_CREATED',payload: account }; } export function accountCreatingFailed(error) { return { type: 'ACCOUNT_CREATING_Failed',payload: error }; } export function createAccount(data,redirectParam) { return (dispatch) => { dispatch(creatingAccount()); const url = config.apiUrl + '/auth/signup'; fetch(url).post({ body: data }) .then(account => { dispatch(accountCreated(account)); }) .catch(err => { dispatch(accountCreatingFailed(err)); }); }; }
状态的某些部分,例如用户对象授权后,可能会存储到本地存储并在下一次应用程序运行时重新水化.