Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (URL, ΡΠ°Π·ΠΌΠ΅Ρ) Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ
@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)
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ this.props.dispatch ΠΊΠ°ΠΆΠ΅ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° @connect . ΠΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°. ΠΠ½Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π΄Π΅ΡΡ connect ΠΈΠ»ΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠ°ΠΊ-ΡΠΎ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ ΡΠ²ΡΠ·Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ? ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ @connect, Π΅ΡΠ»ΠΈ Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π°Π½Π½ΡΠ΅.
Π― Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΠΎ Β«ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉΒ» ΡΠΏΠΎΡΠΎΠ± ΠΈΠ»ΠΈ Π½Π΅Ρ, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ. Π‘ΠΌ., ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ 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)
}
}
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈΠ»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΡΠΆΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ΅ Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΎΠΉ. Π’Π°ΠΊ Ρ ΡΡΠΈΡΠ°Ρ, ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠΎΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Ρ ΠΎΡΡ ΡΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΠΎΠ±ΡΡΡΠ½ΠΈΠ»ΠΈ ΡΡΠΎ! Π― ΠΏΠΎΠ½ΡΠ» ΡΠ΅ΠΏΠ΅ΡΡ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ dispatch
ΡΡΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π²ΡΡΡΠ½ΡΡ ΠΊΠ°ΠΊ ΠΎΠΏΠΎΡΡ.
Π― ΡΠΎΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ·Π°Π΄Π°ΡΠ΅Π½ ΡΡΠΈΠΌ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ.
ΠΡΠ»ΠΈ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΠΈΠΌΠ΅ΡΡ dispatch
Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π· props ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° (ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°), Π»ΠΈΠ±ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΡΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΡΠΆΠ΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΠΌ ΠΊ dispatch
, ΠΈΠ· ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. ΠΠΎ ΠΎΠ±Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΡΡ Π½Π°Π»ΠΈΡΠΈΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° connect
ed, ΡΡΠΎΠ±Ρ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ Π±ΡΠ»Π° Π΄ΠΎΡΡΡΠΏΠ½Π° Π΅ΠΌΡ ΡΠ΅ΡΠ΅Π· Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°.
ΠΡΠ°ΠΊ, Π² ΠΊΠΎΠ½ΡΠ΅ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌ Π½Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ dispatch
Π½Π° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. Π ΠΊΠ°ΠΊ Π±Ρ Π²Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ connect
ed Π½Π΅Ρ?
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ Π±ΡΠ»ΠΈ Π² Π³Π»ΡΠ±ΠΎΠΊΠΎΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²:
Provider
Router
AppContainer
...
...
...
TheComponentThatNeedDispatch
Π° Π΅ΡΠ»ΠΈ Π½ΠΈΠΊΠΎΠΌΡ ΠΈΠ· ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ΅Π΄ΡΠΊΡΠΈΠΈ?
ΠΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ connect
ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠ°Π²ΠΈΡ Π½Π°Ρ Π² ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ connect
ed. ΠΌΠΎΠΆΠ΅Ρ dispatch
Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΡΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΡΡΠ°Π½Π½ΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π²ΡΠΏΠΎΠ»Π½ΡΡΡ dispatch
Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ connect
Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠΎΡΡΠΎΡΠ½ΠΈΡ redux.
Π― Π·Π½Π°Ρ, ΡΡΠΎ ΠΌΡ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ dispatch
ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° (ΡΠ΅ΡΠ΅Π· store.dispatch
), Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ...
Π§ΡΠΎ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅ ΠΎΠ± ΡΡΠΎΠΌ?
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ!
ΠΡΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΡΡΠ°Π½Π½ΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠΎΡΡΠΎΡΠ½ΠΈΡ redux.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΡΡΡΠ°Π½Π½ΠΎ? ΠΡΠΌΠ°ΠΉΡΠ΅ ΠΎ connect
ΠΊΠ°ΠΊ ΠΎ Β«ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊ ReduxΒ», Π° Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΎ Β«ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΠ°ΡΡΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ReduxΒ». Π’ΠΎΠ³Π΄Π° ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ»: ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ dispatch
Π»ΠΈΠ±ΠΎ ΡΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π»ΠΈΠ±ΠΎ Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ connect()
ed Π΄Π»Ρ Redux.
Π‘ ΡΠ΅ΠΊΡΡΠΈΠΌ React Redux API Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ Redux Π±Π΅Π· Π²ΡΠ±ΠΎΡΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ connect(state => ({}))(MyComponent)
(Π²Π΅ΡΠ½ΡΡΡ ΠΏΡΡΡΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ). ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ ΠΈΠ·ΡΡΠ°Π»ΠΈ Π΄Π»Ρ Π½Π΅Π³ΠΎ dispatch
ΠΏΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΡΠ½ΡΠΌ Π³ΡΠ°ΠΆΠ΄Π°Π½ΠΈΠ½ΠΎΠΌ, ΠΈ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ API Π΄Π»Ρ Π·Π°Ρ
Π²Π°ΡΠ° Β«ΡΠΎΠ»ΡΠΊΠΎ 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), ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Β«_idΒ», ΠΊΠΎΡΠΎΡΡΠΉ Ρ Ρ
ΠΎΡΠ΅Π» Π±Ρ ΠΈΠΌΠ΅ΡΡ Π² ΠΌΠΎΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ redux. ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ° POST?
Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π²Π°Ρ
ΠΠΎΠ³Ρ Π»ΠΈ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ API ΠΈΠ·Π½ΡΡΡΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ΅Π΄ΡΠΊΡΠΎΡΠ°?
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½Π΅Ρ, ΡΠ΅Π΄ΡΠΊΡΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΈΡΡΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ².
ΠΊΠΎΠ³Π΄Π° Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ (mongodb), ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Β«_idΒ», ΠΊΠΎΡΠΎΡΡΠΉ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΈΠΌΠ΅ΡΡ Π² ΠΌΠΎΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ redux. ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ° POST?
ΠΠ°.
Π‘ΠΌ. ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ: http://rackt.github.io/redux/docs/advanced/AsyncActions.html
ΡΠΏΠ°ΡΠΈΠ±ΠΎ ΠΡΠ½, ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ (Ρ)
Π΅ΡΠ»ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³, ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΎΡΠ΅Π» Π² ΡΠΈΡΡΠ΅ΠΌΡ,
ΠΠΎΠ³Ρ Π»ΠΈ Ρ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ Π²ΡΠ±ΠΎΡΠΊΡ ΠΈΠ· ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅?
ΠΡΠ»ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³, ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΠΈΡΡΠ΅ΠΌΡ, ΠΌΠΎΠ³Ρ Π»ΠΈ Ρ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ Π²ΡΠ±ΠΎΡΠΊΡ ΠΈΠ· ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅?
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ
Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΈ Π·Π°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³.
Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅ http://rackt.github.io/redux/docs/recipes/ServerRendering.html.
Π―, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠΏΡΡΠΊΠ°Ρ ΡΡΠΎ-ΡΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅, Π½ΠΎ ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΡΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ? Π’ΠΎΠ³Π΄Π° Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π·Π²ΠΎΠ½ΠΈΡΡ ΠΎΡΠΊΡΠ΄Π° ΡΠ³ΠΎΠ΄Π½ΠΎ, Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΡΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΡΠΏΡΠ°Π²ΠΊΡ.
@mpoisot : ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΡ, ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡ _ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ_ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΌΠΈΠΌΠΎ ΠΏΡΠΎΡΠ΅Π³ΠΎ, ΡΡΠΎ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π² ΡΠ°ΠΊΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ , ΠΊΠ°ΠΊ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.
@markerikson ΠΠ½Π΅ ΡΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ Π²ΡΠ΅ ΡΠ΅Π΄ΡΠΊΡΠΎΡΡ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΌΠΎΠ³Ρ Π²ΡΠ·Π²Π°ΡΡ createStore
. Π― ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΡΡ bindAllActionCreators(store.dispatch)
Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅.
ΠΡΠ°Π²Π΄Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ΄Π°, ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅. ΠΠΎ Π΅ΡΠ»ΠΈ ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡΡΠ²ΠΎ, Π½Π΅ Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΡΠΎΠ³ΠΎ. ΠΠ»ΠΈ ΡΠ°Π·Π±Π΅ΠΉΡΠ΅ ΡΠ²ΠΎΠΈ Π½Π°Π±ΠΎΡΡ ΡΠ΅Π΄ΡΠΊΡΠΎΡΠΎΠ² (ΡΠ΅Π΄ΡΠΊΡΠΎΡΡ + ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ + ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ) Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ. ΠΠ»ΠΈ ΠΏΡΠΈΠ²ΡΠΆΠΈΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ.
ΠΡΡΡ Π»ΠΈ Π·Π° ΡΡΠΎ ΡΠΆΠ°ΡΠ½ΠΎΠ΅ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ? ΠΠ»ΠΈ ΡΡΠΎ ΠΊΠ°ΠΊ-ΡΠΎ Π²Π΅Π΄Π΅Ρ ΡΠΆΠ°ΡΠ½ΡΠΉ ΠΏΡΡΡ ΠΊ Π°Π΄Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ?
@mpoisot : Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ connect
ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π»Π΅Π³ΠΊΠΎΠΌΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Ρ ΠΊ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. Β«ΠΠ±ΡΡΠ½ΡΠΉΒ» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π·Π½Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π΅ΠΌΡ Π΄Π°Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠΏΠΎΡΡ, ΠΈ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ»Π½ΡΠ΅Ρ, Π±ΡΠ» Π»ΠΈ ΡΡΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΏΠ΅ΡΠ΅Π΄Π°Π½ Π½Π°ΠΏΡΡΠΌΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ, ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΏΡΠΎΡΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π΅Π³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΊ ΡΡΠΎΠΌΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ (ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠΌ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ Redux: http://redux.js.org/docs/faq/ StoreSetup.html # store-setup-multiple-store). ΠΡΠ»ΠΈ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΎ ΡΠ΅ΠΌ Π²Ρ ΡΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΠ΅, ΡΡΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ° ΠΆΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡ, ΡΡΠΎ ΠΈ ΠΏΡΠΈ ΠΏΡΡΠΌΠΎΠΌ ΠΈΠΌΠΏΠΎΡΡΠ΅ ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ.
Π₯ΠΎΡΠΎΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΉ Π±ΡΠ»ΠΎ Π±Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ ΠΈΠΌΠΏΠΎΡΡΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΊΠ°ΠΊ ΡΠΈΠ½Π³Π»ΡΠΎΠ½Π°, ΡΡΠΎ Π½Π΅ ΠΎΠ΄ΠΎΠ±ΡΡΠ΅ΡΡΡ. Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ, ΠΈ Π½Π°ΡΠ΅Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡ, Π³Π΄Π΅ ΠΡΠ½ ΠΠ±ΡΠ°ΠΌΠΎΠ² ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π½Π΅ ΠΎΠ΄ΠΎΠ±ΡΡΠ΅ΡΡΡ ΠΈΠ·-Π·Π° ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° (ΠΊΠΎΡΠΎΡΡΠΉ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π»ΡΠ΄Π΅ΠΉ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ), Π½ΠΎ, ΠΊΠ°ΠΊ Π½ΠΈ ΡΡΡΠ°Π½Π½ΠΎ, ΠΎΠ½ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π» ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄Π΅Π»Π°ΡΡ, ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ΅Π±Ρ ΠΏΠ»ΠΎΡ ΠΎ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅ Π΄Π΅Π»Π°Ρ).
Π§ΡΠΎ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅Π½Ρ Π΄ΡΠΌΠ°ΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°Π·Π½ΡΡ
Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ? ΠΠΌΠ΅ΡΡΠΎ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΡΠΊΡΠΏΠΎΡΡΠ° ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Π²Π΅ΡΠ½ΠΈΡΠ΅ Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π· StoreSingleton.getStore()
ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΡΠ΅ΡΠ΅Π· StoreSingleton.setStore()
. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Ρ Π½Π΅ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Ρ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°. ΠΠ΄Π½Π°ΠΊΠΎ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΡΠ΅Π΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°.
@mpoisot ΠΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΠΏΠΈΡΠ°Π»ΠΈ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Provider / connect. ;)
Π§Π°ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Β«ΡΡΠΏΠΎΠΉΒ» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ (ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅). Π’Π°ΠΊ ΡΡΠΎ Ρ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Ρ Π΅Π³ΠΎ Π² connect ΠΈΠ»ΠΈ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. Π§Π°ΡΡΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΡ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠΎΠ² ΠΏΡΠΎΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΡΠ°ΡΡΡΠ»ΠΊΠΈ. ΠΠ»Ρ mapStateToProps () Π΅ΡΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΡΠΎΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Ρ Provider / connect (). Π Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Β«Π³Π»ΡΠΏΡΡ Β» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΈΠ·Π²Π»Π΅ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°.
ΠΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°Π·, ΡΡΠΎΠ±Ρ Π·Π°Π΄Π°ΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ. Π, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΠΎΡΠ²Π΅Ρ - Β«ΡΠ°ΠΊ ΡΡΠΎ Π²Ρ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ°Β». (ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΠΏΡΠ°Π²ΡΡΠ΅ ΠΌΠ΅Π½Ρ, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΠ±Π°ΡΡΡ).
ΠΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ connect()
ΠΏΡΠΎΡΡΠΎ Π΄Π°Π΅Ρ Π²Π°ΠΌ ΠΌΠ΅ΡΠΎΠ΄ dispatch
ΠΈΠ· ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Provider
, Π½ΠΎ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ. ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ Π²Π°ΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ React Π±ΡΠ» ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΡΠ»ΡΡΡΠ°ΡΡΠΈΠΉ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, Π²Π·ΡΠ² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅, ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ»ΡΡΡΠΈΠ² Π΅Π³ΠΎ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π² ΡΡΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π²Π½ΠΈΠ· ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠΈΠ²ΡΠ·Π°Π»ΠΈ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΊ ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠΌΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ, Π²Ρ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²ΡΠ·Π²Π°ΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ dispatch
.
ΠΠ°, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² "ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ / ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅", ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π²ΠΈΠ΄Π΅Π», ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ ΡΡΠΈΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠΌ. ΠΠ°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΡΠΎΠΉ ΠΈΠ΄Π΅ΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ-ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π·Π°Ρ
Π²Π°ΡΡΠ²Π°ΡΡ this.context.store
ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΅Π³ΠΎ dispatch
ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
Π― Π±ΡΠ» ΠΏΠΎ ΠΎΠ±Π΅ ΡΡΠΎΡΠΎΠ½Ρ ΠΎΡ ΡΡΠΎΠ³ΠΎ -
Π ΠΌΠΎΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΊΠ°ΠΊ ΡΠΈΠ½Π³Π»ΡΠΎΠ½ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ getStore()
. ΠΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Provider
ΠΈ connect
Π΄Π»Ρ mapStateToProps
.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Ρ ΡΠΎΠ·Π΄Π°Π» ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Ρ ΠΌΠ°Π³Π°Π·ΠΈΠ½ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, @jimbolla ΠΈ @markerikson ) Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠ° Π² ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΈ ΠΎΠ±Π° dispatch
ΠΈ getState
ΠΌΠΎΠ³ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ΠΈ _Π΄ΠΎΠ»ΠΆΠ½Ρ_ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΊΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΡΠ΅ΡΠ΅Π· context
ΠΈΠ»ΠΈ props
) ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΌΠΈ.
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠ΅Π³ΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΡΡΠΈΡΡ, Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π΅Π½, Π½ΠΎ Π»ΠΈΡΠ½ΠΎ Ρ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΎΡΡ ΠΎΠΆΡ ΠΎΡ Π½Π΅Π³ΠΎ.
ΠΠ° ΡΠΆ. ΠΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, _ ΠΌΠΎΠΆΠ΅ΡΠ΅_ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΊΠ°ΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ ΡΠΈΠ½Π³Π»ΡΠΎΠ½, Π½ΠΎ ΠΎΠ½ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ Π²Π°Ρ, ΡΡΠΎ Π½Π΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΈΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ, ΠΈ Ρ Π½Π΅ Π²ΠΈΠΆΡ Π² ΡΡΠΎΠΌ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ².
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡΠ·ΡΠ². ΠΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΡ, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°?
@mpoisot
ΠΠΎΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΡΠ½Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° dispatch
ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ:
https://github.com/reactjs/redux/issues/822#issuecomment -145271384
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π²ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ, ΡΡΠΎΠ±Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, Π² ΡΠ΅ΠΌ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΌΠΎΡΠΈΠ²Π°ΡΠΈΡ.
Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½ dispatch
(Ρ Π΅Π³ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΠ»):
ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅ Π·Π° Π·Π°Ρ Π²Π°Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠ°ΡΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΉ ΠΏΡΡΠ°Π½ΠΈΡΠ΅ΠΉ, ΠΆΠ΅Π»Π°Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π±Π΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
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
?
@isaaclem : Π½Ρ, Π² ΡΡΠΎΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π²Π°Ρ _do_ Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΌΠ°Π³Π°Π·ΠΈΠ½, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΡΡΠΌΡΡ Π²ΡΠ·Π²Π°ΡΡ store.dispatch(someAction)
.
ΠΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ - ΡΠ΅ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ _inside_ <Provider>
Π²ΡΠΏΠΎΠ»Π½ΡΠ» ΡΠΎΠ½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π³Π΅ΠΎΠ»ΠΎΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ
dispatch
ΡΡΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π²ΡΡΡΠ½ΡΡ ΠΊΠ°ΠΊ ΠΎΠΏΠΎΡΡ.