【问题标题】:How to inject inital state in ngrx如何在ngrx中注入初始状态
【发布时间】:2023-03-04 23:11:02
【问题描述】:

我正在 Angular 4 应用程序中实现 ngrx 状态管理。在我尝试使用之前保存在浏览器本地存储中的状态“水合”应用程序状态之前,一切都很顺利。

我对@9​​87654323@ 文档中的Initial State and Ahead of Time Compilation section 有疑问。具体来说,以下行是什么意思?我将如何将(“在运行时动态注入”)initialStateFromSomewhere 设置为从浏览器本地存储中检索到的状态?

/// Pretend this is dynamically injected at runtime
const initialStateFromSomewhere = { counter: 3 };

【问题讨论】:

  • 您正在寻找什么您正在尝试设置您提供的链接显示的初始状态?

标签: angular ngrx ngrx-store


【解决方案1】:

在创建减速器时,您需要为商店提供初始状态。

假设你有一个FeatureState

interface FeatureState {
  counter: number;
}

现在你需要在你的 reducer 中创建 initialState

const initialState: FeatureState = {
  count : 0;
}

这个初始状态将提供给reducer中的状态

export function reducer(state: FeatureState = initialState, action: Action): State {

现在,如果您想动态添加initialState,您可以从商店中检索initialState 并将其传递到reducer

【讨论】:

  • 谢谢。这就是我所缺少的。我需要从 localStorage 中检索 initialState。然后如何在store 中获取此initialState,然后将其从store 中取出,以便我可以在reducer 中传递它?
  • 所以您不需要从商店获取它,您只需创建initialState,您可以将其作为default argument 传递给reducer state 变量。现在,您将创建的 initialState 将从 localStorage 获取它的属性,而不是将它们默认为 0null
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-08
  • 2021-06-26
  • 2016-10-15
  • 1970-01-01
相关资源
最近更新 更多