[Redux] Derived Data

Reducer:

const emprestimo = (
  state = {
    numeroMeses: new BigNumber(36),
    taxa: new BigNumber(1.82),
    valorPrestacao: new BigNumber(304),
    valorFinanciado: new BigNumber(10000)
  },
  action
) => {
  switch (action.type) {
    case "NUMERO_MESES":
      return { ...state, numeroMeses: action.numeroMeses };
    case "TAXA":
      return { ...state, taxa: action.taxa };
    case "VALOR_PRESTACAO":
      return { ...state, valorPrestacao: action.valorPrestacao };
    case "VALOR_FINANCIADO":
      return { ...state, valorFinanciado: action.valorFinanciado };
    default:
      return state;
  }
};

How to calculate the result values?

Create a selector, using reselect!


const valores = state => state;

const derivados = createSelector(valores, state => {
  ///calculate the total...

  return {
    total: total
  };
});

With the selector we need to conect with the reducers:


const mapStateToProps = state => {
  return {
    derivados: derivados(state)
  };
};

connect(mapStateToProps)(CalculoPrestacao);

To use, just do the normal things:

const {    
    derivados
} = state;

<CalculoPrestacao derivados={derivados} />

<Resultado derivados={this.props.derivados} />
const { createSelector } = Reselect;
const { connect } = ReactRedux;

Documentação

Comments