рдирдпрд╛ CombReducers doc рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЙрд╕ рд░рд╛рдЬреНрдп рдХреА рдкрд╛рд░реНрдЯреА рдХреЗ рд░реВрдк рдореЗрдВ
рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдмрд┐рдирд╛ рдЫреЛрдбрд╝реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдереЛрдбрд╝реЗ рд╣реА рдХрд╣рддрд╛ рд╣реИ:
рдкрд░рд┐рдгрд╛рдореА рд░реЗрдбреНрдпреВрд╕рд░ рдкреНрд░рддреНрдпреЗрдХ рдмрдЪреНрдЪреЗ рдХреЛ рд░реЗрдбреНрдпреВрд╕рд░ рдХрд╣рддрд╛ рд╣реИ, рдФрд░ рдЕрдкрдиреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдПрдХ рд╣реА рд░рд╛рдЬреНрдп рд╡рд╕реНрддреБ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИред рд╕реНрдЯреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдХрд╛рд░ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рд░рд┐рдбреНрдпреВрд╕рд░ рдХреА рдХреБрдВрдЬрд┐рдпреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рдореБрдЦ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓реЛрдЧ рдЕрдХреНрд╕рд░ рдЗрд╕ рд╡рд╛рдХреНрдп рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВред
рдХреНрдпрд╛ #399 рд╕реЗ рдмрджрд▓рд╛рд╡ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдВрдЧреЗ?
рдореИрдВ рдХрдо рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рдареАрдХ рдмрд╛рдж рдЗрд╕ рд╕рдореНрдореЗрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдиреЛрдЯ:
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд░реЗрдбреНрдпреВрд╕рд░ рдХреЛ
todos
рдФрд░counter
-- рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдЬреИрд╕реЗ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд░рд╛рдЬреНрдп рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВредрд░рд╛рдЬреНрдп рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд░реЗрдбреНрдпреВрд╕рд░ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Redux _convention_ рдХреЛ рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ - рд░рд┐рдбреНрдпреВрд╕рд░ рдХреЛ рдареАрдХ рдЙрд╕реА рд░рд╛рдЬреНрдп рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд┐рд╕реЗ рдЖрдк рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ #399 рдЕрдЪреНрдЫрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ _Flux рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ_ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╣реИред рдореИрдВ рдирд╛рд╡ рдХреЗ рдирдП рд╕рд┐рд░реЗ рд╕реЗ Redux рдЖ рд░рд╣рд╛ рд╣реВрдБред рдореЗрд░реЗ рдкрд╛рда рдХрд╛ рдХреБрдЫ рд░реВрдк рдЖрдХрд╕реНрдорд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рдпрд╣рд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рдЪрд╛рд░ рд╣реИ: рдХрдиреНрд╡реЗрдВрд╢рди рдПрдкреАрдЖрдИ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ ред рдпрд╣ createRedux
, createDispatcher
рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп API рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рдПрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдкреАрдЖрдИ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред
рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдореИрдВ рдЕрднреА рднреА рдкрд░реЗрд╢рд╛рди рд╣реВрдВ рдХрд┐ рд░рд╛рдЬреНрдп рдХреЗ рдЙрдк-рднрд╛рдЧ рдХреЛ рд░реЗрдбреНрдпреВрд╕рд░ рдореЗрдВ рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдХреНрдпрд╛ рдореБрдЭреЗ рдХреИрдорд▓рдХреЗрд╕ рдЙрдирдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдХреБрдЫ рдФрд░? state={owner: {name: 'John'} }
тЖТ export function ownerName(state = [], action)
?
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдмрд╣реБрдд рдореВрд▓реНрдпрд╡рд╛рди рд╣реИред
рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЬреЛрд░ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐
рдХрдиреНрд╡реЗрдВрд╢рди рдПрдкреАрдЖрдИ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдЪ рдирд╣реАрдВ рд╣реИред
рд╣рдореЗрдВ рд╢рд╛рдпрдж рдбреЙрдХреНрд╕ рдореЗрдВ рдХреЗрд╡рд▓ import *
рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд▓реЛрдЧ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдкреАрдЖрдИ рдХрд╛ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реИ рдЬрдм рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╢реЙрд░реНрдЯрдХрдЯ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдорд╛рдпрдиреЗ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ ES6 export
рдФрд░ import * as
рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдореИрдВ рдЕрднреА рднреА рдкрд░реЗрд╢рд╛рди рд╣реВрдВ рдХрд┐ рд░рд╛рдЬреНрдп рдХреЗ рдЙрдк-рднрд╛рдЧ рдХреЛ рд░реЗрдбреНрдпреВрд╕рд░ рдореЗрдВ рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдХреНрдпрд╛ рдореБрдЭреЗ рдХреИрдорд▓рдХреЗрд╕ рдЙрдирдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдХреБрдЫ рдФрд░? рд░рд╛рдЬреНрдп = {рдорд╛рд▓рд┐рдХ: {рдирд╛рдо: 'рдЬреЙрди'}} тЖТ рдирд┐рд░реНрдпрд╛рдд рд╕рдорд╛рд░реЛрд╣ рд╕реНрд╡рд╛рдореА рдирд╛рдо (рд░рд╛рдЬреНрдп = [], рдХреНрд░рд┐рдпрд╛)?
рдирд╣реАрдВ :-)ред рдпрд╣ рдПрдХ рдЬрд╛рджреБрдИ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рд╣реИред combineReducers(object)
рдХрдИ рд░реЗрдбреНрдпреВрд╕рд░ рдХреЛ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХреБрдВрдЬрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд░рд╛рдЬреНрдп рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдореВрд▓реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрддрд░ рдЧрд╣рд░рд╛ рдХрд░рддрд╛ рд╣реИред рдХреЛрдИ "рдмрд┐рд▓реНрдб рдЯреНрд░реА рдореИрдЬрд┐рдХ" рдирд╣реАрдВ рд╣реИред рд░реЗрдбреНрдпреВрд╕рд░ рдХреЛ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ:
// Function names don't matter!
function processA(state, action) { ... }
function doSomethingWithB(state, action) { ... }
function reducer(state = {}, action) {
return {
// Because you call them!
a: processA(state.a, action),
b: doSomethingWithB(state.b, action)
};
}
// Not using combineReducers
let store = createStore(reducer);
рдпрджрд┐ рдЖрдк combineReducers
рд╕рд╣рд╛рдпрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рднреА рд╡реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдЬрдм рддрдХ рдЖрдк рд╕реНрд╡рдпрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ :
// Function names don't matter!
function processA(state, action) { ... }
function doSomethingWithB(state, action) { ... }
/*
function reducer(state = {}, action) {
return {
a: processA(state.a, action),
b: doSomethingWithB(state.b, action)
};
}
*/
let reducer = combineReducers({
a: processA,
b: doSomethingWithB
});
let store = createStore(reducer);
рдРрд╕рд╛ рдЖрдк рдХрдИ рдмрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╣рд▓реЗ:
// Function names don't matter!
function processSomePartOfA(state, action) { ... }
function doSomethingWithOtherPartOfA(state, action) { ... }
function processA(state, action) {
return {
// Because you call them!
somePart: processSomePartOfA(state.somePart),
otherPart: doSomethingWithOtherPartOfA(state.otherPart)
}
}
function doSomethingWithB(state, action) { ... }
function reducer(state = {}, action) {
return {
// Because you call them!
a: processA(state.a, action),
b: doSomethingWithB(state.b, action)
};
}
// Not using the helper
let store = createStore(reducer);
рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣ рд╕рд┐рд░реНрдл рдлрдВрдХреНрд╢рди рдХреЙрд▓рд┐рдВрдЧ рдлрдВрдХреНрд╢рди рд╣реИред рдХреЛрдИ рдЬрд╛рджреВ рдирд╣реАрдВ "рдЧрд╣рд░реА рдЪреАрдЬреЗрдВ"ред
рдФрд░ рдЖрдк combineReducers
рднреА рдХрдИ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
// Function names don't matter!
function processSomePartOfA(state, action) { ... }
function doSomethingWithOtherPartOfA(state, action) { ... }
/*
function processA(state, action) {
return {
somePart: processSomePartOfA(state.somePart),
otherPart: doSomethingWithOtherPartOfA(state.otherPart)
}
}
*/
let processA = combineReducers({
somePart: processSomePartOfA,
otherPart: doSomethingWithOtherPartOfA
});
function processA(state, action) { ... }
function doSomethingWithB(state, action) { ... }
/*
function reducer(state = {}, action) {
return {
a: processA(state.a, action),
b: doSomethingWithB(state.b, action)
};
}
*/
let reducer = combineReducers({
a: processA,
b: doSomethingWithB
});
let store = createStore(reducer);
рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдЬрд╣рд╛рдВ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ, рдЬрдм рдЖрдк export
+ import * as
рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рд╡рд╕реНрддреБ рдХреЛ "рдкреНрд░рд╛рдкреНрдд" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк combineReducers
рдХреНрдпреЛрдВрдХрд┐ _рдпрд╣ рд╕рд┐рд░реНрдл import *
рд╣реИ_ ! рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдЙрдирдХреА рдирд┐рд░реНрдпрд╛рдд рдХреБрдВрдЬреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд╕реНрддреБ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдореЗрд░реА рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЧрд▓рддреА рдпрд╣ рдорд╛рди рд▓реЗрдирд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдореЗрд░реА рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЧрд▓рддреА рдпрд╣ рдорд╛рди рд▓реЗрдирд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдкрд╛рдардХ рдИрдПрд╕ 6 рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рдпрд╣ рдПрдХ рдЦрд┐рдВрдЪрд╛рд╡ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣реА рдмрд╛рдд рд▓реЛрдЧреЛрдВ рдХреЛ рд╕реАрдЦрдиреЗ рдФрд░ рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рддреА рд╣реИред рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ рдЬрдм рдкрдврд╝рдирд╛ рдкрд╛рдардХ рдХреЗ рдЬреНрдЮрд╛рди рдФрд░ рдЕрдиреБрднрд╡ рд╕реЗ рдЖрдЧреЗ рд╣реИред
рд╣рдо combineReducers
рдХреЛ reducers/index
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ: https://github.com/gaearon/redux/pull/473
рдмрдВрдж рдХрд░рдирд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред
рдФрд░ рд╣рдо рдЕрдм рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ import *
рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдирд┐рд╣рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХреЛрдбрд┐рдВрдЧ рдЕрднреНрдпрд╛рд╕ рд╣реИ?
рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдХреЛрдб рдХреЛ рдЕрд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ CombReducer рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдЕрдореВрд░реНрддрддрд╛ рдХрд╛ рдПрдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрджрдо рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИред
рдЬрдм рдЖрдк рдПрдХ рдврд╛рдВрдЪрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рдЬрд╛рджреВ" рднрд╛рд╡рдирд╛ред
рдкреАрдПрд╕: рдореИрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реЗрдбрдХреНрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕реЗ рдЖрдпрд╛ рд╣реВрдВ: "рдпрд╣ рдЬрд╛рджреВ рдирд╣реАрдВ рд╣реИ"
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдмрд╣реБрдд рдореВрд▓реНрдпрд╡рд╛рди рд╣реИред
рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЬреЛрд░ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдЪ рдирд╣реАрдВ рд╣реИред
рд╣рдореЗрдВ рд╢рд╛рдпрдж рдбреЙрдХреНрд╕ рдореЗрдВ рдХреЗрд╡рд▓
import *
рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд▓реЛрдЧ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдкреАрдЖрдИ рдХрд╛ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реИ рдЬрдм рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╢реЙрд░реНрдЯрдХрдЯ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВредрдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдорд╛рдпрдиреЗ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ ES6
export
рдФрд░import * as
рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВредрдирд╣реАрдВ :-)ред рдпрд╣ рдПрдХ рдЬрд╛рджреБрдИ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рд╣реИред
combineReducers(object)
рдХрдИ рд░реЗрдбреНрдпреВрд╕рд░ рдХреЛ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХреБрдВрдЬрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд░рд╛рдЬреНрдп рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдореВрд▓реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрддрд░ рдЧрд╣рд░рд╛ рдХрд░рддрд╛ рд╣реИред рдХреЛрдИ "рдмрд┐рд▓реНрдб рдЯреНрд░реА рдореИрдЬрд┐рдХ" рдирд╣реАрдВ рд╣реИред рд░реЗрдбреНрдпреВрд╕рд░ рдХреЛ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ:рдпрджрд┐ рдЖрдк
combineReducers
рд╕рд╣рд╛рдпрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рднреА рд╡реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдЬрдм рддрдХ рдЖрдк рд╕реНрд╡рдпрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ :рдРрд╕рд╛ рдЖрдк рдХрдИ рдмрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╣рд▓реЗ:
рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣ рд╕рд┐рд░реНрдл рдлрдВрдХреНрд╢рди рдХреЙрд▓рд┐рдВрдЧ рдлрдВрдХреНрд╢рди рд╣реИред рдХреЛрдИ рдЬрд╛рджреВ рдирд╣реАрдВ "рдЧрд╣рд░реА рдЪреАрдЬреЗрдВ"ред
рдФрд░ рдЖрдк
combineReducers
рднреА рдХрдИ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдЬрд╣рд╛рдВ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ, рдЬрдм рдЖрдк
export
+import * as
рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рд╡рд╕реНрддреБ рдХреЛ "рдкреНрд░рд╛рдкреНрдд" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдкcombineReducers
рдХреНрдпреЛрдВрдХрд┐ _рдпрд╣ рд╕рд┐рд░реНрдлimport *
рд╣реИ_ ! рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдЙрдирдХреА рдирд┐рд░реНрдпрд╛рдд рдХреБрдВрдЬреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд╕реНрддреБ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИредрдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдореЗрд░реА рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЧрд▓рддреА рдпрд╣ рдорд╛рди рд▓реЗрдирд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИред