【发布时间】:2017-08-22 07:07:53
【问题描述】:
我很难使用 React / Redux 预加载状态。
在将其标记为重复之前,我已经阅读了以下内容:
- http://redux.js.org/docs/recipes/reducers/InitializingState.htm
- Redux - managing preload state
- What are your best practices for preloading initialState in your Redux apps?
这是我的场景:
- 我正在使用 Node + React + Redux。
- 当我从服务器加载页面时,我从数据库加载
User对象。我需要这个User对象处于没有往返服务器的状态。 - 因为
User对象是动态的,所以我不能将它放在包中。 - 我不使用服务器渲染。
我的问题:
我最初如何将用户对象从服务器加载到我在客户端的存储中?
在this answer,丹·阿布拉莫夫说:
在客户端上,您可以从 全局变量 中读取它,并使用它创建客户端存储实例。换句话说,您永远不必手动创建 initialState——您应该使用 store.getState() 在服务器上获取它,将其传递给客户端,然后使用它创建一个 store。
所以,我假设,全局变量,他的意思是这样的:
// Here, window._initialState.user is being sent to the client in a <script/> tag.
const store = createStore(reducers, { user: window._initialState.user);
上述可能有效,问题是我没有信心这实际上是一个好习惯,因为我在互联网上没有找到任何示例关于它。
那么,这是正确的做法吗?有没有更好/更推荐的方法?
【问题讨论】:
-
FWIW,这是我们公司的标准做法,我们已经编写了一堆 redux 应用程序。我们还进行服务器端渲染并通过服务器端存储实例生成该状态,但即使没有它也应该可以工作。
-
@RicoKahler,谢谢。它在那里,我没有看到它。如果您想添加答案,我会接受。否则我会用你的评论回答我自己的问题。
标签: javascript reactjs redux