Использовать запомненный результат реселекта в редукторе? - PullRequest
0 голосов
/ 26 марта 2020

Я вычисляю данные из моего состояния Redux с помощью Reselect. Пока что это довольно просто:

Функция повторного выбора:

import { createSelector } from 'reselect'


const expensiveFunction = () => {
  // Expensive calculation here
}

const getInputs = state => state.inputs;

export const calculatedFromInputs = createSelector(
  [getInputs],
  (inputs) => {
    return expensiveFunction(inputs)
  }
)

Подключение к компоненту React:

import { connect } from 'react-redux'
import MyComponent from '../MyComponent'
import { calculatedFromInputs } from '../selectors'

const mapStateToProps = state => {
  return {
    inputsCalculated: calculatedFromInputs(state)
  }
}

const MyComponent = connect(mapStateToProps)(MyComponent)

export default MyComponent

Однако теперь я хочу использовать результат getVisibleTodos в моем редукторе есть какие-то проблемы или вещи, на которые нужно обратить внимание при выполнении этого?

import { calculatedFromInputs } from '../selectors'

function reducer(state: state = initState, action: action) {
  switch (action.type) {
    case "something":
      const inputsCalculated = calculatedFromInputs(state);
      if (inputsCalculated.length > 10) {
        return state;
      }
      return {
        ...state,
        foo: 'bar'
      };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...