React-dnd: рдбреНрд░реЙрдкрдЯрд╛рд░реНрдЧреЗрдЯ рдореИрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд░реЗрдбрдХреНрд╕ рдХрдиреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рдлрд╝рд░ре░ 2016  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: react-dnd/react-dnd

рдореИрдВ рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЛ рд░реЗрдбрдХреНрд╕ рдХреЛ рд╣реБрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдПрдХ рдбреНрд░реЙрдк рд▓рдХреНрд╖реНрдп рднреА рд╣реЛрддрд╛ рд╣реИред

export default DropTarget(dragTypes, storyTarget, collect)(connect(mapStateToProps)(StoryEditor));

рдЗрд╕ рд╕рдордп рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рд╕рд╣реА рд╣реИред

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

рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд░реВрдБрдЧрд╛:

import { compose } from 'redux'

export default compose(
  DropTarget(dragTypes, storyTarget, collect),
  connect(mapStateToProps)
)(StoryEditor);

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

рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд░реВрдБрдЧрд╛:

import { compose } from 'redux'

export default compose(
  DropTarget(dragTypes, storyTarget, collect),
  connect(mapStateToProps)
)(StoryEditor);

рд░рд┐рдПрдХреНрдЯ рдбреАрдПрдирдбреА рдбреЙрдХреНрд╕ рдореЗрдВ _.flow рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рддреЛ рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рдЕрдзрд┐рдХрд╛рд░ рдХреЛ рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░реЗрдбрдХреНрд╕ рд╕реЗ compose рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣реИ рдирд╛?

@ ekeric13 Redux рдХрд╛ compose рдЙрд▓реНрдЯреЗ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде _.flow рд╕рдорд╛рди рд╣реИред рдЕрд░реНрдерд╛рддреН,

compose(f, g, h)(x) === flow(h, g, f)(x) === f(g(h(x)))

@gaearon compose рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ compose рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЧреИрд░ рд╕рд╣реА рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдлрд┐рд░ рднреА рд╣рдо рддреАрди рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ DropTarget ред рдпрд╣ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рд▓рд┐рдЦреЗрдВ (... рдлрд╝рдВрдХреНрд╢рди)

рджрд╛рдПрдВ рд╕реЗ рдмрд╛рдПрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд░рдЪрдирд╛ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд░реВрдк рдореЗрдВ Redux рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдЖрдк рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрдИ рд╕реНрдЯреЛрд░ рдПрдиреНрд╣рд╛рдВрд╕рд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред

рдмрд╣рд╕

(рддрд░реНрдХ): рд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпред рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХрд╛ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдмрд╛рдИрдВ рдУрд░ рдЦрдбрд╝реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдЕрдкрд╡рд╛рдж рд╕рдмрд╕реЗ рд╕рд╣реА рддрд░реНрдХ рд╣реИ рдЬреЛ рдХрдИ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд░рд┐рдгрд╛рдореА рд░рдЪрдирд╛ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд▓рд┐рдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред

BuilderArea.propTypes = {
  addPanel: PropTypes.func.isRequired
};

const mapStateToProps = state => ({
  panels: state.panels
});

export default compose(
  DropTarget(Types.PANEL_CARD, builderAreaTarget, (connect, monitor) => ({
    connectDropTarget: connect.dropTarget(),
    isOver: monitor.isOver()
  })),
  connect(
    mapStateToProps,
    { addPanel }
  )
)(BuilderArea);
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

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

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

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

Vadorequest picture Vadorequest  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ