在Isomorphic Redux应用程序中设置cookie的位置?

Cno*_*ode 15 javascript node.js reactjs isomorphic-javascript redux

我有关于redux和同构应用的3个一般问题:

  • 在客户端和服务器之间共享"运行时"数据的最佳方法是什么? 例如,当用户登录远程API时,我将会话对象存储在cookie中.这样,下次客户端请求我的前端时,前端服务器可以读取cookie并使用之前的会话初始化redux存储.这样做的缺点是客户端HAS在启动时验证/无效会话(例如,在根组件的componentDidMount中).我应该请求会话服务器端而不是从cookie中读取它吗?
  • 我应该在哪里执行cookie存储操作,在动作创建者或者reducers中?我应该将cookie存储在处理用户会话的reducer中吗?
  • 我应该在哪里执行重定向用户的操作(通过react-router)?我的意思是当我的用户成功登录时,我应该从哪里调度重定向操作(一旦登录承诺解决后从loginActionCreator解决?),在其他地方?)

提前致谢.

Cno*_*ode 6

我设法得到一个非常整洁的应用程序结构.以下是我为每个问题找到的内容:

  • 我只通过cookie在我的客户端和前端服务器之间共享API服务器令牌.每次客户端请求站点.前端服务器调用API服务器以验证会话.如果这些服务器位于同一网络上,那么它的速度非常快(<5ms).我还在初始渲染之前为服务器上的客户端预取一些有用的数据.我设法在600ms内在客户端中加载我的应用程序并准备好(javascript加载).这很不错.

  • 存储cookie的操作在我的动作创建者中.正如伊桑克拉克所说,我们必须让减速器保持纯净.它更容易测试.

  • 一旦用户通过身份验证,我仍会在我的登录创建者中调度重定向.我想测试比在组件或其他地方的promise解析之后调度动作更容易.

事实上,记住这一点可以让我们让一个应用程序真的很容易测试(期望你必须拥有大量间谍的行动创造者).

希望它会帮助某人.

感谢您的参与.


Eth*_*ark 4

问题 2:您应该在您的动作创建器中执行 cookie 存储。减速器必须保持纯函数。

我真的很抱歉我不知道1和3的答案,但我希望这会有所帮助!