рдореИрдВрдиреЗ рд╕рднреА рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ - рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдкрдврд╝рд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдХрд╣реАрдВ рднреА рдореБрдЭреЗ рдПрдХ рдЙрддреНрддрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред рдореИрдВ рдпрд╣рд╛рдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВрдиреЗ рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬ, рдпрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдордЭ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реИред
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдШрдЯрдХ рдХрд╛ mapStateToProps () рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ (рдЖрд░рдВрднреАрдХрд░рдг рдкрд░) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдлрд┐рд░ рдХрднреА рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рднреА reducer рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрдиреЗ рд▓рдЧрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ / рд░рд┐рдбреНрдпреВрд╕рд░ / рдкреНрд░реЙрдкреНрд╕ рд╕рдм рдПрдХ рд╕рд╛рде рдмрдВрдзреЗ рд╣реИрдВред
рдореБрдЭреЗ рдкрд╣рд▓реЗ рдпрд╣ рдмрддрд╛рдиреЗ рджреЗрдВ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдЬрд╛рдирддрд╛ рд╣реВрдВ:
рд▓реЗрдХрд┐рди ... рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХрд╛ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ, рд░рд┐рдбреНрдпреВрд╕рд░ рдФрд░ рдореИрдкрд╕реНрдЯреИрдЯрдЯреЙрдкреНрд░реЛрдк рд╕рднреА рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдореЗрд░реЗ рд╕рд╡рд╛рд▓:
рдХреНрдпрд╛ рдЖрдк http://redux.js.org/docs/Troublesourcing.html рд╕реЗ
рдореИрдВ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдЯреЛрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ, рдРрд╕реЗ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд░рдЦрддрд╛ рд╣реИред рд╡реЗ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдЧреБрдг рд╡реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдк-рд╡реГрдХреНрд╖ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдпреЗ рд╕рдЪ рд╣реИ?
рд╣рд╛рдБред рд╕реНрдЯреЛрд░ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рд╕реНрдерд┐рддрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд░рдЦрддрд╛ рд╣реИред рдпрд╣ store.getState()
рд╕реЗ рдЙрд╕ рд╡рд╕реНрддреБ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ рдЖрдк рд░реВрдЯ рд░рд┐рдбреНрдпреВрд╕рд░ рд╕реЗ рд▓реМрдЯрддреЗ рд╣реИрдВ, рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЕрдХреНрд╕рд░ рдкреЗрдбрд╝ рдЬреИрд╕рд╛ рд╣реЛрддрд╛ рд╣реИред
рдЬрдм рдХреЛрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕реНрдЯреЛрд░ рдореЗрдВ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╕рдВрдкрддреНрддрд┐ (рдпрд╛ рд╕реНрдЯреЛрд░ рдХрд╛ рдЙрдк-рдкреЗрдбрд╝) рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреЛрд░ рдХреЗ рднреАрддрд░ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рд░реНрдорд╛рдг / рд╕рдВрдШ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рдирд╣реАрдВ, рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХрд╛ рд╕реНрд╡рдд: рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╕реНрдЯреЛрд░ рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рд░реВрдЯ reducer рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХрд╛ рд░реВрдЯ рд░рд┐рдбреНрдпреВрд╕рд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╡рд╣ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж рдорд┐рд▓реЗрдЧрд╛:
function counter(state = 0, action) {
if (action.type === 'INCREMENT') {
return state + 1; // will become the next value of store.getState() after store.dispatch()
}
return state;
}
рдпрджрд┐ рдЖрдк combineReducers({ foo, bar })
рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рд╕рд╛рде рдореВрд▓ reducer _ _enerate_ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕реЗ рдЖрдкрдиреЗ рд╣рд╛рде рд╕реЗ рдПрдХ рд░реВрдЯ reducer рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
function root(state = {}, action) {
return {
foo: foo(state.foo, action),
bar: bar(state.bar, action)
}
}
рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд░рд╛рдЬреНрдп рдкрд░ рдЧреБрдг рдЕрдХреНрд╕рд░ рдЖрддреЗ рд╣реИрдВред рдЙрдирдХреЗ рдореВрд▓реНрдп рдЗрд╕ рдмрд╛рдд рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ foo
рдФрд░ bar
рд░рд┐рдбреНрдпреВрд╕рд░ рдХреНрд░рдорд╢рдГ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╣реБрдП рд╡рд╛рдкрд╕ рдЖ рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдЖрдк рдЙрдирдХреЗ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реИрдВред
рдЙрдЪрд┐рдд рд╕рдВрдкрддреНрддрд┐ / рд╕реНрдЯреЛрд░ рдХреЗ рднрд╛рдЧ рдХреЗ рдЕрдкрдбреЗрдЯ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП mapStateToProps "рдХреИрд╕реЗ" рдЬрд╛рдирддрд╛ рд╣реИ? рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИ?
рдЖрдк mapStateToProps
рд╕реЗ connect()
рдлрд╝рдВрдХреНрд╢рди рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдШрдЯрдХ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реНрдЯреЛрд░ рдореЗрдВ рд╣рд░ рдмрджрд▓рд╛рд╡ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП store.subscribe()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╕реНрдЯреЛрд░ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЙрддреНрдкрдиреНрди рдШрдЯрдХ store.getState()
рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реЗ рд╕рд╣рд╛рд░рд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП mapStateToProps()
рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╡реЗ рдмрджрд▓ рдЧрдП, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рдШрдЯрдХ рдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛ред
рдореИрдВ рдпрд╣ рдХреИрд╕реЗ рдбрд┐рдмрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдкрд╕реНрдЯреИрдЯрдЯреВрдкреНрд░реЙрдкреНрд╕ рдХреЛ рдЖрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд▓рдЧрддреА рд╣реИ?
Https://github.com/theaqua/redux-logger рдЬреИрд╕реЗ рдПрдХ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЬреЛрдбрд╝реЗрдВ mapStateToProps
рднреА рдмреБрд▓рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐
dispatch()
рдПрдХ рдПрдХреНрд╢рди рдХреЛ рднреВрд▓ рдЧрдП рдФрд░ рд╕рд┐рд░реНрдл рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░ рдХрд╣рд▓рд╛рдП,connect()
mapStateToProps()
рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реБрдПредрдЗрди рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╡рд░реНрдгрди http://redux.js.org/docs/Troublesourcing.html рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ StackOverflow рдкрд░ рд╕рд╡рд╛рд▓ рдкреВрдЫрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЯреНрд░реИрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдЖрдкрдХреЛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд▓рдЧрд╛рддрд╛рд░ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред
рдзрдиреНрдпрд╡рд╛рдж!
рдХреНрд░рдо рдореЗрдВ рдЙрддреНрддрд░ рджреЗрдирд╛:
{ users : {}, posts : {}, comments : {}, ui : {} }
ред Http://redux.js.org/docs/FAQ.html#reducers -share-state рдФрд░ http://redux.js.org/docs/FAQ.html#organizing -state-nested-data рджреЗрдЦреЗрдВредcombineReducers
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ Reducer рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддреА рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреЗ рджрд┐рдП рдЧрдП рд╕реНрд▓рд╛рдЗрд╕ рдХреЗ рдЕрдкрдбреЗрдЯ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЬреИрд╕реЗ: const combinedReducer = combineReducers({users : userReducer, posts : postReducer, comments : commentsReducer, ui : uiReducer});
connect()
рдлрд╝рдВрдХреНрд╢рди рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдШрдЯрдХ рдХреЗ mapStateToProps
рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХреЗ рдмрд╛рдж рд╕реЗ рдХреЛрдИ рднреА рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЗрд╕реНрдЯреЗрдб рд░рд╛рдЬреНрдп рд╕рджрд╕реНрдпрддрд╛ рдирд╣реАрдВ рд╣реИред Http://redux.js.org/docs/FAQ.html#store -setup-рд╕рджрд╕реНрдпрддрд╛рдПрдБ рджреЗрдЦреЗрдВредрдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рдЪреАрдЬреЛрдВ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдЙрд╕ рд╕реЗ рдкрд░реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдбреИрди рдиреЗ рдХрд╣рд╛: рдЖрдорддреМрд░ рдкрд░ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдкреНрд░рд╢реНрди рдмреЗрд╣рддрд░ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд┐рд╕реНрдХреЙрд░реНрдб рдкрд░ рд░рд┐рдПрдХреНрдЯрд┐рдлреНрд▓рдХреНрд╕ рд╕рдореБрджрд╛рдп рдореЗрдВ рдЪреИрдЯ рдЪреИрдирд▓реЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ, рдЬреЛ Redux рд╕рд╣рд┐рдд рд░рд┐рдПрдХреНрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддрдХрдиреАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ, рдФрд░ рд╣рдореЗрд╢рд╛ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд▓реЛрдЧреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд▓рдЯрдХрд╛ рд░рд╣рддрд╛ рд╣реИред Https://www.reactiflux.com рдкрд░ рдПрдХ рдирд┐рдордВрддреНрд░рдг рд▓рд┐рдВрдХ рд╣реИред
@ рд░рд┐рдЪрдм-рд╣рдиреЛрд╡рд░ рдЖрдкрдиреЗ рд╢рд╛рдпрдж рдЙрдерд▓реЗ рддреБрд▓рдирд╛ рдХреА рд╣реИ рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд┐рдбрдХреНрд╕ рдХрдиреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рднреАрддрд░ рдиреЗрд╕реНрдЯреЗрдб рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛, рднрд▓реЗ рд╣реА рд╡реЗ рд╕рдВрд╢реЛрдзрд┐рдд рд╣реЛрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд░реВрдЯ рдХреБрдВрдЬреА рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИред
http://redux.js.org/docs/faq/ReactRedux.html#why -isnt- рдореЗрд░рд╛ рдШрдЯрдХ-рдкреБрдирдГ-рдкреНрд░рддрд┐рдкрд╛рджрди-рдпрд╛-рдореЗрд░рд╛-рдорд╛рдирдЪрд┐рддреНрд░рд╕реНрдЯреИрдЯреЛрдкреНрд░реЛрдк-рд░рдирд┐рдВрдЧ
@ рд░рд┐рдЪрдм-рд╣реИрдВрдЧрдУрд╡рд░ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, @gaearon рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛:
рдпрд╛ рдЖрдкрдХреЗ рд░рд┐рдбреНрдпреВрд╕рд░ рдиреЗ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕рдорд╛рди рдорд╛рди рд▓реМрдЯрд╛рдпрд╛ рддрд╛рдХрд┐ рдХрдиреЗрдХреНрдЯ () рдореИрдкрд╕реНрдЯреИрдЯрдЯреЙрдкреНрд░реЛрдкреНрд╕ () рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд░реЗрд╢рд╛рди рди рд╣реЛред
рдореИрдВ рдЗрд╕ рдлрд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдпрд╣ рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдерд╛
const mapStateToProps = (state, props) => {
return { id: props.id, currentState: state[props.id] };
}
const mapDispatchToProps = (dispatch) => {
return {
increment: (id) => {
dispatch({ type: 'INCREMENT', id: id })
}
}
}
const DumbListItem = ({
increment,
id,
currentState
}) => (
<div>
<li onClick={() => increment()}>{id}</li>
<span>{currentState}</span>
</div>
);
export const ConnectedListItem = connect(
mapStateToProps,
mapDispatchToProps
)(DumbListItem);
рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЙрд▓ рдореЗрдВ id
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ (рдпрд╛ рддреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ increment(id)
, рдпрд╛ mapDispatchToProps
рдореЗрдВ рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ), рд╕реНрдЯреЛрд░ рдиреЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рд╢рд╛рдпрдж рдЖрдкрдХрд╛ рдореБрджреНрджрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдХреНрдпрд╛ рдЖрдк http://redux.js.org/docs/Troublesourcing.html рд╕реЗ
рд╣рд╛рдБред рд╕реНрдЯреЛрд░ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рд╕реНрдерд┐рддрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд░рдЦрддрд╛ рд╣реИред рдпрд╣
store.getState()
рд╕реЗ рдЙрд╕ рд╡рд╕реНрддреБ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ рдЖрдк рд░реВрдЯ рд░рд┐рдбреНрдпреВрд╕рд░ рд╕реЗ рд▓реМрдЯрддреЗ рд╣реИрдВ, рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЕрдХреНрд╕рд░ рдкреЗрдбрд╝ рдЬреИрд╕рд╛ рд╣реЛрддрд╛ рд╣реИредрдирд╣реАрдВ, рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХрд╛ рд╕реНрд╡рдд: рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╕реНрдЯреЛрд░ рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рд░реВрдЯ reducer рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХрд╛ рд░реВрдЯ рд░рд┐рдбреНрдпреВрд╕рд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╡рд╣ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж рдорд┐рд▓реЗрдЧрд╛:
рдпрджрд┐ рдЖрдк
combineReducers({ foo, bar })
рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рд╕рд╛рде рдореВрд▓ reducer _ _enerate_ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕реЗ рдЖрдкрдиреЗ рд╣рд╛рде рд╕реЗ рдПрдХ рд░реВрдЯ reducer рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд░рд╛рдЬреНрдп рдкрд░ рдЧреБрдг рдЕрдХреНрд╕рд░ рдЖрддреЗ рд╣реИрдВред рдЙрдирдХреЗ рдореВрд▓реНрдп рдЗрд╕ рдмрд╛рдд рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ
foo
рдФрд░bar
рд░рд┐рдбреНрдпреВрд╕рд░ рдХреНрд░рдорд╢рдГ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╣реБрдП рд╡рд╛рдкрд╕ рдЖ рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдЖрдк рдЙрдирдХреЗ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реИрдВредрдЖрдк
mapStateToProps
рд╕реЗconnect()
рдлрд╝рдВрдХреНрд╢рди рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдШрдЯрдХ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реНрдЯреЛрд░ рдореЗрдВ рд╣рд░ рдмрджрд▓рд╛рд╡ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдПstore.subscribe()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╕реНрдЯреЛрд░ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЙрддреНрдкрдиреНрди рдШрдЯрдХstore.getState()
рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реЗ рд╕рд╣рд╛рд░рд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПmapStateToProps()
рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╡реЗ рдмрджрд▓ рдЧрдП, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рдШрдЯрдХ рдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛редHttps://github.com/theaqua/redux-logger рдЬреИрд╕реЗ рдПрдХ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЬреЛрдбрд╝реЗрдВ
mapStateToProps
рднреА рдмреБрд▓рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐dispatch()
рдПрдХ рдПрдХреНрд╢рди рдХреЛ рднреВрд▓ рдЧрдП рдФрд░ рд╕рд┐рд░реНрдл рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░ рдХрд╣рд▓рд╛рдП,connect()
mapStateToProps()
рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реБрдПредрдЗрди рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╡рд░реНрдгрди http://redux.js.org/docs/Troublesourcing.html рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ StackOverflow рдкрд░ рд╕рд╡рд╛рд▓ рдкреВрдЫрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЯреНрд░реИрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдЖрдкрдХреЛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд▓рдЧрд╛рддрд╛рд░ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред
рдзрдиреНрдпрд╡рд╛рдж!