Redux: @Connect рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 30 рдЬреБрд▓ре░ 2015  ┬╖  32рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: reduxjs/redux

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реЗрдбрд░ рдХрдВрдЯреЗрдирд░ рд╣реИ рдЬреЛ рдЗрдореЗрдЬ рдбреЗрдЯрд╛ (url, size) рдХреЛ рдиреАрдЪреЗ рдПрдХ рд╣реЗрдбрд░ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ

@connect(state => ({
  header: state.header
}))
export default class HeaderContainer extends Component {
 /// pass props.header data to child Header which renders image.
}

рдлрд┐рд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдШрдЯрдХ рд╣реИ рдЬрд┐рд╕реЗ рд╣реЗрдбрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд░рд╛рдЬреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддрд╛ рд╣реИред Afaik рдореБрдЭреЗ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

const { dispatch } = this.props
const actions = bindActionCreators(headerActions, dispatch)

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ, рдпрд╣ .props.dispatch рдХреЗрд╡рд▓ рддрднреА рдЙрдкрд▓рдмреНрдз рд▓рдЧрддреА рд╣реИ рдЬрдм рдЖрдк @connect рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЧрд▓рдд рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░реЛрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП dispatch рдиреАрдЪреЗ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рднреА 32 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ "рд╕рд╣реА" рддрд░реАрдХрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЖрдк рд╕рдВрджрд░реНрдн рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдЯреЛрд░ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Connector рдШрдЯрдХ рджреЗрдЦреЗрдВ:
https://github.com/gaearon/react-redux/blob/master/src/components/createConnector.js

рдореИрдВ рддреБрдореНрд╣рд╛рд░рд╛ рдкреАрдЫрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ред рдореИрдВ @connect рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдЯреЛрд░ рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реВрдВред рдореИрдВ @connect рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдШрдЯрдХ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрд╛рдВрдзрдиреЗ / рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдвреВрдВрдв рд░рд╣рд╛ рд╣реВрдВред

dispatch рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреЛрд░ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдШрдЯрдХ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди @connect рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реНрдЯреЛрд░ рдХреЛ рд╕рдВрджрд░реНрдн рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреА рдкреНрд░реЗрд╖рдг рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

class MyComponent extends Compoenent {
    static contextTypes = {
        store: React.PropTypes.object.isRequired,
    }

    render() {
         const { dispatch } = this.context.store
         const actions = bindActionCreators(headerActions, dispatch)
    }
}

рдЖрдкрдХреЛ рдкреНрд░реЗрд╖рдг рдореВрд▓ рдШрдЯрдХ рд╕реЗ рдиреАрдЪреЗ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдПрдХреНрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ _the_ way рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рдВрджрд░реНрдн рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрджреНрдпрдкрд┐ рдпрд╣ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ

рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рдпреЗ рдЕрдм рдорд┐рд▓рд╛ред

рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░реЛрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП dispatch рдиреАрдЪреЗ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдереЛрдбрд╝рд╛ рд╣реИрд░рд╛рди рднреА рд╣реВрдБред

рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭреВрдВ, рддреЛ рд╣рдореЗрдВ рдпрд╛ рддреЛ dispatch рдХрд╛ рдПрдХ рдШрдЯрдХ рдХреЗ рд╕рдореВрд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЙрд╕ рдШрдЯрдХ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП) рдпрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА dispatch рд╕реЗ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реЗ рдореВрд▓ рдШрдЯрдХред рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓ рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ connect ed рд╣реЛ рддрд╛рдХрд┐ рдкреНрд░реИрд╕ рдЕрдкрдиреЗ рдкреНрд░реЙрдкреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛ рд╕рдХреЗред

рдЗрд╕рд▓рд┐рдП рдЕрдВрдд рдореЗрдВ рд╣рдо рд╕рд┐рд░реНрдл рдореВрд▓ рдШрдЯрдХ рдкрд░ dispatch рдХреА рд╣рдорд╛рд░реА рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдЖрдк рдРрд╕рд╛ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ рдЕрдЧрд░ рдРрд╕рд╛ рдХреЛрдИ connect рдПрдб рдкреИрд░реЗрдВрдЯ рди рд╣реЛ?

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рд╣рдо рдШрдЯрдХреЛрдВ рдХреЗ рдЧрд╣рди рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдереЗ:

Provider
  Router
    AppContainer
     ...
       ...
         ...
           TheComponentThatNeedDispatch

рдФрд░ рдЕрдЧрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА Redux рд░рд╛рдЬреНрдп рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ?

connect рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдЗрдб-рдЗрдлрд╝реЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдШрдЯрдХ рдХреЛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдП рдЧрдП рдкреНрд░реЗрд╖рдг рдиреЗ рд╣рдореЗрдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреВрд░реНрд╡-рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХрд╛ connect рд╣реЛрдирд╛ dispatch рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдоред рдпрд╣ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдШрдЯрдХ рдХреА dispatch рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдХреНрд╖рдорддрд╛ рдФрд░ рд░рд┐рдбрдХреНрд╕ рд░рд╛рдЬреНрдп рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП connect рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмреАрдЪ рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрднреА рднреА рдШрдЯрдХ рд╕рдВрджрд░реНрдн рд╕реЗ dispatch рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ( store.dispatch рдорд╛рдзреНрдпрдо рд╕реЗ) рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ ...

рдЖрдкрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрд╛?

рдзрдиреНрдпрд╡рд╛рдж!

рдпрд╣ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ рдХреА рдХреНрд╖рдорддрд╛ рдФрд░ рд░рд┐рдбрдХреНрд╕ рд░рд╛рдЬреНрдп рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмреАрдЪ рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпреЛрдВ рдЕрдЬреАрдм рд╣реИ? connect рдХреЛ "Redux рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ" рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪреЗрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ "Redux рд░рд╛рдЬреНрдп рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ"ред рддрдм рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ: dispatch рдпрд╛ рддреЛ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдЗрд╕рдХреЗ рдХреБрдЫ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ Redux рдореЗрдВ connect() рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рд░рд┐рдПрдХреНрдЯ Redux рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд░рд╛рдЬреНрдп рдХрд╛ рдЪрдпрди рдХрд┐рдП рдмрд┐рдирд╛ Redux рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ connect(state => ({}))(MyComponent) (рдЦрд╛рд▓реА рд╡рд╕реНрддреБ рд▓реМрдЯрдирд╛) рдЬреИрд╕рд╛ рдХреБрдЫ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рдПрдкреАрдЖрдИ рдХреА рдЦреЛрдЬ рдХрд░ рд░рд╣реЗ рдереЗ рдЬреЛ dispatch рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХрд╛ рдирд╛рдЧрд░рд┐рдХ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ "рд╕рд┐рд░реНрдл dispatch " рд╣рдерд┐рдпрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред

рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рднреА рд╣реИ рдХреНрдпрд╛?

рдХрдиреЗрдХреНрдЯ рдХреЛ "Redux рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ" рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪреЗрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ "Redux рд░рд╛рдЬреНрдп рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ"ред

рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЕрдм :)ред

рдирдП API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдЖрдирдВрдж рд╣реИ!

рдпрд╣ https://github.com/gaearon/react-redux/releases/tag/v0.5.0 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ!

@gaearon рд╣реЗ рдбреИрди рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдиреЗрд╕реНрдЯреЗрдб рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде bindActionCreators рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЯрд┐рдк рджреЗ рд╕рдХрддреЗ рд╣реИрдВ:

"AddProduct" - Redux рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)
__ "рдкреНрд░реЛрдбрдХреНрдЯрд▓рд┐рд╕реНрдЯ"
____ "ProductView"ред

рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ ProductView рдбрд┐рд╕реНрдкреИрдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдорд╛рд╕реНрдЯрд░ "рдЙрддреНрдкрд╛рдж рдЬреЛрдбрд╝реЗрдВ" рдореЗрдВ рд╣реИ:

function appState(state) {
    return {...};
}

export default connect(appState)(AddProduct)

рдЖрдк рдпрд╛ рддреЛ connect() рдиреЗрд╕реНрдЯреЗрдб рдШрдЯрдХ рднреА рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдЗрд╕реЗ рдкреНрд░реЛрдк рдХреЗ рд░реВрдк рдореЗрдВ dispatch рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдзрдиреНрдпрд╡рд╛рдж рдбреИрди, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рд╕рдЪ рдореЗрдВ рдкреНрдпрд╛рд░ рднреА redux!

рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓ рдЕрдЧрд░ рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ:
рдХреНрдпрд╛ рдореИрдВ рд╕рд░реНрд╡рд░ API рдкреЛрд╕реНрдЯ рд░рд┐рдбреНрдпреВрд╕рд░ рдХреЗ рдЕрдВрджрд░ рд╕реЗ рд╣реА рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ?
рдЬрдм рдореИрдВ рдбреЗрдЯрд╛рдмреЗрд╕ (mongodb) рдХреЗ рд▓рд┐рдП POST рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЖрдЗрдЯрдо рдХреЛ "_id" рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдкрдиреЗ рд▓рд╛рд▓ рд░рд╛рдЬреНрдп рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдкреНрд░реЗрд╖рдг рдХреЛ POST рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдзрдиреНрдпрд╡рд╛рдж

рдХреНрдпрд╛ рдореИрдВ рд╕рд░реНрд╡рд░ API рдкреЛрд╕реНрдЯ рд░рд┐рдбреНрдпреВрд╕рд░ рдХреЗ рдЕрдВрджрд░ рд╕реЗ рд╣реА рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ?

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ, reducers рдХрд┐рд╕реА рднреА рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╕реЗ рдореБрдХреНрдд рд╢реБрджреНрдз рдХрд╛рд░реНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬрдм рдореИрдВ рдбреЗрдЯрд╛рдмреЗрд╕ (mongodb) рдХреЗ рд▓рд┐рдП POST рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЖрдЗрдЯрдо рдХреЛ "_id" рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдкрдиреЗ рд▓рд╛рд▓ рд░рд╛рдЬреНрдп рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдкреНрд░реЗрд╖рдг рдХреЛ POST рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╣рд╛рдБред

рдХреГрдкрдпрд╛ рдЗрд╕ рдЧрд╛рдЗрдб рдХреЛ рджреЗрдЦреЗрдВ: http://rackt.github.io/redux/docs/advanced/AsyncActions.html

рдзрдиреНрдпрд╡рд╛рдж Dan, рдорд╣рд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (y)

рдпрджрд┐ im рд╕рд░реНрд╡рд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ,
рдХреНрдпрд╛ рдореИрдВ рд╕реНрдЯреЛрд░ рд╕реЗ async рд▓рд╛рдиреЗ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдБ, рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ?

рдЕрдЧрд░ im рд╕рд░реНрд╡рд░ рдХреЗ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧ рдЗрди рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдореИрдВ рд╕реНрдЯреЛрд░ рд╕реЗ рдПрд╕рд┐рдВрдХреНрд╕ рд▓рд╛рдиреЗ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдЖрдк рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдЯреЛрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП async рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд░реЗрдВрдбрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Http://rackt.github.io/redux/docs/recipes/ServerRendering.html рднреА рджреЗрдЦреЗрдВ

рдореИрдВ рд╢рд╛рдпрдж рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╕рднреА рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рд╛рд░рдВрдн рдХреЗ рджреМрд░рд╛рди рд╕рднреА рдПрдХреНрд╢рди-рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдкрд░ рдкреНрд░реЗрд╖рдг? рдлрд┐рд░ рдЖрдк рдкреНрд░реЗрд╖рдг рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╣реАрдВ рд╕реЗ рднреА рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рдереЗред

@mpoisot : рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдРрдк рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ _every_ рд╕рдВрднрд╛рд╡рд┐рдд рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░ рдХреЛ рдЬрд╛рдирдирд╛, рдЖрдпрд╛рдд рдХрд░рдирд╛, рдмрд╛рдБрдзрдирд╛ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдЬреИрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

@markerson рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рд┐рдбреНрдпреВрд╕рд░ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ createStore рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ bindAllActionCreators(store.dispatch) рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рд╕рдЪ рд╣реИ, рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХреЛрдб рдореЗрдВ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдЪрд┐рдВрддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдордд рдХрд░реЛред рдпрд╛ рдЕрдкрдиреЗ reducer- рд╕реЗрдЯ (reducer + рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ + рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ) рдХреЛ рдЫреЛрдЯреЗ, рдЕрдзрд┐рдХ рдХреЗрдВрджреНрд░рд┐рдд рдмрдВрдбрд▓реЛрдВ рдореЗрдВ рддреЛрдбрд╝ рджреЗрдВред рдпрд╛ рдХреЗрд╡рд▓ рдХреБрдЫ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЛ рдмрд╛рдВрдзреЗрдВред

рдХреНрдпрд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднрдпрд╛рдирдХ рдкреНрд░рджрд░реНрд╢рди рдЬреБрд░реНрдорд╛рдирд╛ рд╣реИ? рдпрд╛ рдпрд╣ рдХрд┐рд╕реА рддрд░рд╣ рдирд░рдХ рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рднрдпрд╛рдирдХ рд░рд╛рд╕реНрддрд╛ рдиреАрдЪреЗ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ?

@mpoisot : рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рднреА

рдкреНрд░рдХрд╛рд╢ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ connect рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧред рдПрдХ "рд╕рд╛рджреЗ" рдШрдЯрдХ рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдПрдХ рдкреНрд░реЛрдкреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдПрдХ рдХреЙрд▓рдмреИрдХ рд╣реИ рдЬрд┐рд╕реЗ рд╕реАрдзреЗ рдХреБрдЫ рдореВрд▓ рдШрдЯрдХ, рдпрд╛ рдкреВрд░реНрд╡-рдмрд╛рдзреНрдп рдПрдХреНрд╢рди рдирд┐рд░реНрдорд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдШрдЯрдХ рдХреЛ рдПрдХ рд╕реАрдзрд╛ рддрд░реАрдХреЗ рд╕реЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рдкрд░реАрдХреНрд╖рдг рднреА рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рд╕реЗ рд╕реНрдЯреЛрд░ рдХрд╛ рдЖрдпрд╛рдд рд╕реАрдзреЗ рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдЯреЛрд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдХреЛ рдмрд╛рдВрдзрдиреЗ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреНрд░рддрд┐рджреАрдкреНрддрд┐ FAQ рдХреЗ рдЕрдиреБрд╕рд╛рд░: http://redux.js.org/docs/faq/ StoreSetup.html # store-setup-multiple-stores)ред рдЕрдЧрд░ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреНрдпрд╛ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реНрдЯреЛрд░ рдХреЛ рд╕реАрдзреЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рд╣реИред

рдЖрд╣ рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ, рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдореЗрдВ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдЯреЛрд░ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдореИрдВрдиреЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдХреНрдпреЛрдВ, рдФрд░ рдореБрдЭреЗ рдХрдИ рдРрд╕реЗ рд╕реНрдерд╛рди рдорд┐рд▓реЗ рдЬрд╣рд╛рдВ рджрд╛рди рдЕрдмреНрд░рд╛рдореЛрд╡ рдиреЗ рдХрд╣рд╛ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ (рдЬреЛ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рдХрднреА рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ) рдХреЗ рдХрд╛рд░рдг рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рд╕реНрдЯреЛрд░ рдХреЛ рдлреЗрд▓ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЬреАрдм рдмрд╛рдд рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрднреА рднреА рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ (рдЬреЛ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреБрд░рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ)ред

рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк рдПрдХ рд╕реНрдЯреЛрд░ рд╕рд┐рдВрдЧрд▓рдЯрди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд╕реНрдЯреЛрд░ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╕реНрдЯреЛрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рд╕реАрдзреЗ рд╕реНрдЯреЛрд░ рдХреЛ рд╕реНрд╡рдпрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕реЗ StoreSingleton.getStore() рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реМрдЯрд╛рдПрдВ, рдФрд░ StoreSingleton.setStore() рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдЯреЛрд░ рдХреЛ рдмрджрд▓реЗрдВред рдЗрд╕рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЖрдк рдХрд┐рд╕реА рд╕реНрдЯреЛрд░ рдХреЗ рдПрдХрд▓ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдБ рдХрд┐ рдпрд╣ рдереНрд░реЗрдбреЗрдб рд╕рд░реНрд╡рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

@mpoisot рдЖрдкрдиреЗ рдЕрднреА рдмрддрд╛рдпрд╛ рдХрд┐ рдкреНрд░рджрд╛рддрд╛ / рдХрдиреЗрдХреНрдЯ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВред ;)

рдЕрдХреНрд╕рд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ "рдЧреВрдВрдЧрд╛" рдШрдЯрдХ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ рджрд┐рди рдкреНрд░реЗрд╖рдг (рдпрд╛ рдкреВрд░реНрд╡-рдмрд╛рдзреНрдп рдХрд╛рд░реНрд░рд╡рд╛рдИ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрд╕реЗ рдХрдиреЗрдХреНрдЯ рдореЗрдВ рд▓рдкреЗрдЯрддрд╛ рд╣реВрдВ, рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЬреБрдбрд╝реЗ рдШрдЯрдХ рд╕реЗ рд╕рд╛рдорд╛рди рдиреАрдЪреЗ рд▓рд╛рдПрдВ рдЬреЛ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдпрд╣ рдЕрдХреНрд╕рд░ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рд╕реБрд▓рдн рдкреНрд░реЗрд╖рдг рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдпрд░рд┐рдВрдЧ рдФрд░ рдкрд╛рд╕рд┐рдВрдЧ рдкреНрд░реЙрдкреНрд╕ рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИред MapStateToProps () рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рддрд╛ / рдХрдиреЗрдХреНрдЯ () рдХреЗ рд╕рд╛рде рдЕрджреНрднреБрдд рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рд╣реИрдВред рдФрд░ рдЧреВрдВрдЧрд╛ рдШрдЯрдХреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдЪреНрдЪ рдЖрджреЗрд╢ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЕрд░реНрдХ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рддрд░реНрдХ рджреЗрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рдмрд╛рд░ рдорд╛рд░рд╛ рд╣реИред рдФрд░ рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрддрд░ "рдХрд┐рд╕реА рджрд┐рди рдЖрдк рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ"ред (рдореБрдЭреЗ рд╕рд╣реА рдЬрд╡рд╛рдм рджреЛ рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдБ)ред

рдЕрднреА, connect() рдЖрдкрдХреЛ Provider рд╕реНрдЯреЛрд░ рд╕реЗ dispatch рдореЗрдердб рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╢рд╛рдпрдж рдпрд╣ рдмрджрд▓ рдЬрд╛рдПред рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рджреЗрд╡ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рд╕реНрд░реЛрдд рдХреНрдпрд╛ рд╣реИ рдЬреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдлрд╛рдпрд░рд┐рдВрдЧ рд╣реИред рдпрд╛ рдХреЛрдИ рдРрд╕рд╛ рдШрдЯрдХ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдЯреЛрд░ рдХреЛ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реНрдЯреЛрд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕реЗ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрд╕ рдмрдврд╝рд╛рдпрд╛ рд╕реНрдЯреЛрд░ рдХреЛ рдШрдЯрдХ рдкреЗрдбрд╝ рдХреЗ рдиреАрдЪреЗ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЛ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рд╕реНрдЯреЛрд░ рдореЗрдВ рдмрд╛рдВрдзрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рдВрднрд╡рддрдГ dispatch рдЧрд▓рдд рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред

рд╣рд╛рдВ, рдореИрдВрдиреЗ рдХреБрдЫ "рдХрдВрдкреЛрдиреЗрдВрдЯ / рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрдЯреЗрдб рд╕реНрдЯреЗрдЯ" рдкреНрд░рдпреЛрдЧ рдХрд┐рдП рд╣реИрдВ, рдЬреЛ рдореИрдВрдиреЗ рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦреЗ рд╣реИрдВред рдЙрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рдлреНрдЯреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рдХреЛ рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░реИрдкрд░ рдШрдЯрдХ рдЕрднреА рднреА this.context.store рд╣рдбрд╝рдк рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ dispatch рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореИрдВ рдЗрд╕рдХреЗ рджреЛрдиреЛрдВ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рд░рд╣рд╛ рд╣реВрдБ -

рдореЗрд░реЗ рдкреНрд░рд╛рдердорд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рд╣рдо рд╕реНрдЯреЛрд░ рдХреЛ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдЙрдкрд▓рдмреНрдз getStore() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЕрднреА рднреА Provider рдФрд░ connect mapStateToProps ред

рджреВрд╕рд░реА рдУрд░, рдореИрдВрдиреЗ рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдПрдк рдмрдирд╛рдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдореИрдВ рдШрдЯрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рднреАрддрд░ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╕реНрдЯреЛрд░ (рдЬреИрд╕реЗ @jimbolla рдФрд░ @markerikson рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд▓рдкреЗрдЯрддрд╛ рд╣реВрдВ , рдФрд░ рджреЛрдиреЛрдВ dispatch рдФрд░ getState рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдкреВрд░реЗ рдРрдк рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡реЗ _ha__ рдкреВрд░реЗ рдРрдк рдореЗрдВ рд╡рд╛рдпрд░реНрдб рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ (рдпрд╛ рддреЛ context рдпрд╛ props ) рдФрд░ рдПрдХрд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред

рдЖрдк рдЬреЛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдВрдЧрд▓рдЯрди рд╕реНрдЯреЛрд░ рдХрд╛ рд╕рд╛рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдзреАрд░реЗ-рдзреАрд░реЗ рдЗрд╕рд╕реЗ рджреВрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред

рд╣рд╛рдБред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ _can_ рд╕реНрдЯреЛрд░ рдХреЛ рдПрдХ рд╕реБрд▓рдн рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рдн рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж, рд╢рд╛рдирджрд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред рдХреНрдпрд╛ рдХреЛрдИ рд╕реНрдЯреЛрд░-рд░реИрдкрд┐рдВрдЧ рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд▓рд┐рдВрдХ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

@mpoisot

рдпрд╣рд╛рдБ рджрд╛рди рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ dispatch рд▓рдкреЗрдЯрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

https://github.com/reactjs/redux/issues/822#issuecomment -145271384

рдкреНрд░реЗрд░рдгрд╛ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкреВрд░реЗ рд╕реВрддреНрд░ рдХреЛ рдкрдврд╝рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреИрд╕реЗ dispatch рд▓рд┐рдкрдЯрд╛ рд╣реИ (рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рд╣реИ):

wrappeddispatch

рдЗрд╕ рдкреБрд░рд╛рдиреЗ рдкреЛрд╕реНрдЯ рдХреЛ рд╣рд╛рдИрдЬреИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реА рддрд░рд╣ рдХреЗ рднреНрд░рдо рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдмрд┐рдирд╛ рдХрдиреЗрдХреНрдЯ рдХрд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рднреЗрдЬрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИред

export default class App extends Component {
...
  componentDidMount() {
    //registering event listener
    BackgroundGeolocation.on('location', this.onLocation, this.onError);
  }

  onLocation(location) {
   //wishing to dispatch an action to update variable in store
  }

  render() {
    return (
      <Provider store={store}>
        <AlertProvider>
          <MainNavigator screenProps={{ isConnected: this.state.isConnected }} />
        </AlertProvider>
      </Provider>
    );
  }
}

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдореИрдВ рд╕рдВрднрд╡рддрдГ рдЗрд╕ рдШрдЯрдХ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЕрднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕реНрдЯреЛрд░ рдХреЛ Provider рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдЕрдкрдиреЗ onLocation рдШрдЯрдирд╛ рдореЗрдВ рд╕рдВрднрд╡рддрдГ рдПрдХ рдкреНрд░реЗрд╖рдг рдХреИрд╕реЗ рдХрд░реВрдВрдЧрд╛?

@ рдЖрдЗрд╕реНрдХреИрд▓рдо : рдареАрдХ рд╣реИ, рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк _do_ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╕реАрдзреЗ store.dispatch(someAction) рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдЖрдкрдХреЗ рдШрдЯрдХ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкреБрдирд░реНрдЧрдарди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдХреБрдЫ рдШрдЯрдХ _inside_ <Provider> рдкреГрд╖реНрдарднреВрдорд┐ рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдХрдиреЗрдХреНрдЯ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

parallelthought picture parallelthought  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ms88privat picture ms88privat  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mickeyreiss-visor picture mickeyreiss-visor  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ramakay picture ramakay  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rui-ktei picture rui-ktei  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ