Я вычисляю данные из моего состояния 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'
};