2016-05-26 4 views
1

То, что я понимаю, что есть понятие «Чистые функции», которые я получил объяснить в этом video и этот вопрос What is pure functions?Что такое чистый редуктор?

Однако я столкнулся термин «Pure восстановителей» в контексте потока/Redux я прочитал на this link

Но я не совсем уверен, как применить это «чистое понятие» к редукторам, что такое чистый редуктор?

+2

Редуктор - это функция. конкретный вид, но только функция. то же самое. Роза с любым другим именем ... – dandavis

+0

Редуктор - это функция, так что это просто более конкретное имя. –

ответ

4

Вот мое понимание, в терминах redux редуктор - это функция, которая принимает два аргумента (состояние, действие).

1. state represents the current state of the application in store 
2. action represents the action that triggered 

Redux предполагает, что редукторы действительно принимает текущее состояние и не мутируют состояние, но возвращает новое состояние, в зависимости от типа действия. Если он придерживается и не мутирует состояние, тогда он является чистым редуктором.

/********************** Пример чистого редуктора ****************** ***********/

var initialState = {counter:0}; 
function counterReducer(state = initialState, action){ 
    if (action.type === 'INCREMENT'){ 
     // returns a new state incrementing a counter 
     return {counter:state.counter + 1}; 
    } 
    else if (action.type === 'DECREMENT'){ 
     // return a new state decrementing a counter 
     return {counter:state.counter - 1}; 
    } 

    // returns the state as is 
    return state; 
} 

выше функция не имеет побочных эффектов, когда она вызывается с тем же набором аргументов она всегда возвращает тот же результат.

/********************* пример нечистого редуктора ******************* ********/

var initialState = {counter:0}; 
function counterReducer(state = initialState, action){ 
    if (action.type === 'INCREMENT'){ 
     // modifies state by mutating or incrementing the counter in state 
     state.counter++; 
    } 
    else if (action.type === 'DECREMENT'){ 
     // modifies state by mutating or decrementing the counter in state 
     state.counter--; 
    } 

    // returns the state 
    return state; 
} 
0

Редуктор - это просто функция, передаваемая в качестве аргумента функции уменьшения массива. Например:

const sumReducer = (acc, x) => acc + x 
const multReducer = (acc, x) => acc * x 

const sumResult = [1,2,3,4,5].reduce (sumReducer, 0) 
const multResult = [1,2,3,4,5].reduce (multReducer, 1) 

Это в основном редуктор.

Смежные вопросы