Сохранение настроек в редукторе и доступ к ним из другого редуктора? - PullRequest
0 голосов
/ 05 августа 2020

У меня есть редуктор настроек:

state = {
    fontSize: 30,
    fontWeight: 400,
    ...etc.
  },

У меня другой редуктор, которому нужен доступ к fontSize редуктора настроек. Я не знаю, как сейчас получить доступ к этому состоянию. Каким было бы простое и жизнеспособное решение?

1 Ответ

0 голосов
/ 05 августа 2020

Основываясь на моем понимании из комментариев,

Вы можете достичь того, что вам нужно, как показано ниже

  • Сохраните начальное состояние fontSize значение в обоих редукторах.
  • Каждый раз, когда пользователь обновляет fontSize из редуктора настроек с помощью action, отправляйте другое действие с тем же значением fontSize, чтобы обновить редуктор статей и вычислить новое значение из него (вы можете сохранить его под другим именем в редукторе статей, в зависимости от ваших требований)
  • Теперь вы будете обновлять fontSize в редукторе настроек в соответствии с обновлением пользователя , новое вычисленное значение, основанное на обновленном fontSize в редукторе статьи вместе с исходным (начальным) fontSize.
// Assuming you are using thunk middleware

// While dispatching action for fontSize update
updateFontSize (fontSize) {
  return dispatch => {
    dispatch({type: UPDATE_FONT_SIZE, fontSize});
    dispatch({type: GET_UPDATED_FONT_SIZE, fontSize});
  }
}


// settingsReducer.js
const initialState = {
  fontSize: 30,
  fontWeight: 400,
  ...
}

reducer (state = initialState, action) {
  switch(action.type) {
    case UPDATE_FONT_SIZE:
      return {...state, fontSize: action.fontSize};
  ...
}


// articleReducer.js
const initialState = {
  fontSize: 30,
  ...
}

reducer(state = initialState, action) {
  switch(action.type) {
    case GET_UPDATED_FONT_SIZE: // Different action, with different data update based on fontSize
      return {...state, additionalValue: (action.fontSize / 2)};
  ...
}

...