Как внедрить начальное состояние в ngrx

Я реализую управление состоянием ngrx в приложении Angular 4. Все шло хорошо, пока я не попытался «увлажнить» состояние приложения состоянием, ранее сохраненным в локальном хранилище браузера.

У меня есть вопрос о разделе Исходное состояние и предварительная компиляция из ngrx/store документации. В частности, что означает следующая строка и как мне установить ("динамически внедрять во время выполнения") initialStateFromSomewhere в состояние, полученное из локального хранилища браузера?

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

person ebhh2001    schedule 11.08.2017    source источник
comment
что вы ищете, вы пытаетесь настроить начальное состояние, предоставленная вами ссылка показывает это?   -  person Rahul Singh    schedule 11.08.2017


Ответы (1)


При создании вашего редуктора вы предоставляете начальное состояние для хранилища.

Предположим, у вас есть FeatureState

interface FeatureState {
  counter: number;
}

Теперь в вашем редукторе вам нужно создать initialState

const initialState: FeatureState = {
  count : 0;
}

Это начальное состояние будет передано в состояние в reducer

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

Теперь, если вы хотите динамически добавить initialState, вы можете получить initialState из хранилища и передать его в reducer.

person Anurag Singh Bisht    schedule 11.08.2017
comment
Спасибо. Это то, чего мне не хватает. Мне нужно получить initialState из localStorage. Как мне затем получить этот initialState в store, а затем получить его из store, чтобы я мог передать его в reducer? - person ebhh2001; 11.08.2017
comment
Таким образом, вам не нужно получать его из магазина, вам нужно просто создать initialState, который вы можете передать как переменную default argument для reducer state. Теперь initialState, который вы создадите, получит свое свойство от localStorage, а не просто установит их по умолчанию на 0 или null. - person Anurag Singh Bisht; 11.08.2017