最近,我一直在使用两个 redux 存储构建通用 Web 应用程序:一个在客户端,一个在服务器上。Redux 似乎是管理状态数据的好工具。可以将 Redux 用于 React 之外的东西吗?例如,你可以在命令行应用程序中使用 Redux 吗?
我觉得这种客户端存储和服务器存储方法打破了“单一事实来源规则”,但感觉非常好,到目前为止效果很好。我发现我可以重用大约 80% 的减速器来组成两个商店。服务器上的状态通常是一个集合,其中客户端上的状态可以是单个对象。
例如:假设您有一个聊天应用程序的客户端状态:
{
user: 'mike@aol.com',
room: {
name: 'sports',
users: [ ... ],
messages: [ ... ]
}
}
服务器状态类似,可以使用类似的 reducer,但它使用集合而不是对象。
{
connectedUsers: ['mike@aol.com', ... ],
rooms: [
{
name: 'sports',
users: [ ... ],
messages: [ ... ]
},
{ ... },
{ ... }
]
}
创建两个状态树会重用许多相同的 reducer。这种方法还允许我向服务器发送操作并以来自客户端的操作进行响应。当有新连接时,使用服务器存储来生成状态客户端存储也不是很困难。
我的问题
我很喜欢这种通用应用程序的方法。这是否违反任何规则?你可以有一个客户端商店和一个服务器商店吗?使用服务器存储来生成初始值并不是很难。
还有其他人以这种方式使用通用应用程序吗?