рд╣рд╛рдп @jaredpalmer , рдЕрдкрдиреЗ рд╕реНрдЯрд╛рд░реНрдЯрд░-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдорд╣рд╛рди рдХрд╛рдо!
рдореЗрд░реЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрдЯрди рдХреНрд▓рд┐рдХ) рдкрд░ рд░реЗрдбрдХреНрд╕ рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпрд╛рдВ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рд╣реИред рдореЗрд░реЗ рдкреНрд░рд╢реНрди рд╕рд╣реА рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИрдВред рдЕрддреАрдд рдореЗрдВ рдореИрдВрдиреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдФрд░ рдмрд╛рдЗрдВрдб рдлрдВрдХреНрд╢рди рдХреЛ рдЗрд╕ рддрд░рд╣ рдХрд╣рд╛:
function mapDispatchToProps(dispatch) {
return bindActionCreators({
importedAction,
}, dispatch);
}
class Calendar extends React.Component {
constructor(props) {
super(props);
this.handleClick = this.handleClick.bind(this);
}
handleClick(programId) {
this.props.importedAction()
.then((response) => {
do something with response
});
}
}
....
render() {
return (
<a onClick={this.handleClick}>Click me to dispatch action</a>
)
}
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдмреИрдмреЗрд▓-рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╣рд░ рд╕рдордп "рдПрдХреНрд╕рдЯреЗрдВрдбреНрд╕ рд░рд┐рдПрдХреНрдЯ.рдХрдВрдкреЛрдиреЗрдВрдЯ" рд▓рд┐рдЦрдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореИрдВ 'рдмрд╛рдЗрдВрдбрдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕' рднреА рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ред
рдкреНрд░рд╢реНрди, рдореИрдВ рдКрдкрд░ рдХреИрд╕реЗ рд▓рд┐рдЦреВрдВрдЧрд╛ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рдЖрдкрдХреЗ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
function mapDispatchToProps(dispatch) {
return bindActionCreators({
importedAction,
}, dispatch);
}
class Calendar extends React.Component {
handleClick(programId) {
this.props.importedAction()
.then((response) => {
do something with response
});
}
}
....
render() {
return (
<a onClick={(evt) => this.handleClick()}>Click me to dispatch action</a>
)
}
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк connect
рд╕реЗ react-redux
рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
'рд░рд┐рдПрдХреНрд╢рди-рд░реЗрдбрдХреНрд╕' рд╕реЗ рдЖрдпрд╛рдд {рдХрдиреЗрдХреНрдЯ}
... рдЖрдкрдХрд╛ рдШрдЯрдХ ...
рдирд┐рд░реНрдпрд╛рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдиреЗрдХреНрдЯ (mapStateToProps, actionCreators) (рдХреИрд▓реЗрдВрдбрд░)
рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ Redux рдкрд░ рдбреИрди рдЕрдмреНрд░рд╛рдореЛрд╡ рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рджреЗрдЦреЗрдВ:
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ react-redux
API connect
рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ: https://github.com/reactjs/react-redux/blob/master/docs/api.md#connectmapstatetoprops -mapdispatchtoprops-mergeprops-options
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк
connect
рд╕реЗreact-redux
рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:'рд░рд┐рдПрдХреНрд╢рди-рд░реЗрдбрдХреНрд╕' рд╕реЗ рдЖрдпрд╛рдд {рдХрдиреЗрдХреНрдЯ}
... рдЖрдкрдХрд╛ рдШрдЯрдХ ...
рдирд┐рд░реНрдпрд╛рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдиреЗрдХреНрдЯ (mapStateToProps, actionCreators) (рдХреИрд▓реЗрдВрдбрд░)