Геттер не обновляется при изменении свойства

#javascript #redux #ecmascript-6 #redux-toolkit #immer.js

Вопрос:

У меня есть геттер, который возвращает значение внутри фабрики, но когда redux-took изменяет мое значение, геттер не обновляется. Я попробовал это без redux-инструментария, и он работает нормально.

В моем редукторе setBalanceVisibility , когда значение isVisible изменяется, получатель formattedValueSignal не обновляется.

 /*Redux*/

const initialState = {
  current: userFactory(),
  isLoading: false,
  hasError: false,
}

const userSlice = createSlice({
  name: '@user',
  initialState,
  reducers: {
    setBalanceVisibility(state) { 
      state.current.balance.isVisible = !state.current.balance.isVisible
    },
  },
})


/*Factory*/
export function userFactory(object) {
  if (!object) {
    return null
  }

  const { name, email, accountBalance } = object

  return {
    name,
    email,
    balance: balanceFactory(accountBalance),
  }
}

export function balanceFactory(object) {
  if (!object) {
    return null
  }

  const { value, formattedValue, isVisible } = object

  return {
    value,
    formattedValue,
    isVisible,
    get formattedValueSignal() {
      if (this.isVisible) {
        return this.formattedValue
      }

      return '-- --'
    },
  }
}
 

Комментарии:

1. Это очень странный способ подхода к функциям селектора. Похоже, что balanceFactory отображает состояние на некоторые свойства. Когда состояние меняется, вы заменяете свой баланс на баланс для нового состояния? Если нет, то, конечно, он не реагирует. Но, честно говоря, это так странно, что я не понимаю, где и как вы это используете.