рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд▓ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, Monitor.isDragging() рдХрднреА-рдХрднреА рдЭреВрдард╛ рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ, рдЬрдм рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реЗ рджреВрд╕рд░реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЦреАрдВрдЪрддреЗ рд╕рдордп рдЗрд╕реЗ рд╕рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реЗрдЯрдЕрдк: рд╕рд░рд▓ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдбреЗрдореЛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдПрдХ рдФрд░ рдХрдВрдЯреЗрдирд░ рдФрд░ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕реЗрдЯ рдЬреЛрдбрд╝реЗрдВред рдХрд╛рд░реНрдб рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реЗ рджреВрд╕рд░реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЦреАрдВрдЪреЗ рдЬрд╛рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЙрдирдХреЗ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЫрд╛рдВрдЯреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реЗ рджреВрд╕рд░реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЦреАрдВрдЪреЗ рдЬрд╛рдиреЗ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдЫрд╛рдВрдЯрдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХрд╛рд░реНрдб рдХреЛ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реЗ рджреВрд╕рд░реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдкрд░ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдХрд╛рд░реНрдб рдШрдЯрдХ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП isDragging рдкреНрд░реЙрдкрд░реНрдЯреА (рдбреНрд░реИрдЧрд╕реЛрд░реНрд╕ рдбреЗрдХреЛрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЬреЗрдХреНрд╢рди) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рдЖрдЗрдЯрдо рдХреЛ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реЗ рджреВрд╕рд░реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдореЙрдиреАрдЯрд░ рд╕реНрд░реЛрдд рдЖрдИрдбреА рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЕрдм рдбреНрд░реИрдЧ рдХрд┐рдП рдЧрдП рдШрдЯрдХ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрддрд╛ рд╣реИ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЭреВрдард╛ isDraging рдЬрдм рдпрд╣ рд╕рдЪ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЪреВрдВрдХрд┐ рдбреНрд░реИрдЧрд╕реЛрд░реНрд╕ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рддрд┐ рдбреНрд░реИрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╕рдВрдЧрдд рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдпрджрд┐ рдЖрдкрдХреЗ рдбреНрд░реИрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдШрдЯрдХ рдХреА рдХреБрдВрдЬрд┐рдпрд╛рдБ рдХрд┐рд╕реА рднреА рд╕рдордп рдмрджрд▓ рдЬрд╛рддреА рд╣реИрдВ рддреЛ рдЕрдиреНрдп рд╕рд╛рдорд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрд▓рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ), рдХреНрдпрд╛ рд╕реНрд░реЛрдд рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп рдХреЛрдб рдЙрд╕ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдЦреАрдВрдЪрдирд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗ?
рдЕрдЧрд░ рдЖрдкрдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдореЗрд░рд╛ рдХреЛрдб рд╕рд░рд▓ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдбреЗрдореЛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
@amoenk рд╣рд╛рдВ, рд╣рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣рд╛рдВ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: http://notlouieagain.com/~amoenk/dnd/
рдФрд░ рдпрд╣ рд▓рд┐рдВрдХ рдЕрдирдмрдВрдбрд▓ рдХреЛрдб рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: http://notlouieagain.com/~amoenk/dnd/js/
рдУрд╣, рдЬрдм рдореИрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рддрдм рднреА рдореИрдВрдиреЗ рдореВрд▓ рд╕рд░рд▓ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдбреЗрдореЛ рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХ рд╕рдВрдШрдЯрдХ рдФрд░ рд╕рдВрдШрдЯрдХ рд╕рдореВрд╣ рд╣реИрдВред
рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реА рдФрд░ рдореБрдЭреЗ DnDStudy
рдШрдЯрдХ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдЕрдкрдирд╛ рдкреВрд░рд╛ рдХреЛрдб рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдЖрдкрдХрд╛ред рдЖрдк рдбреЗрдореЛ рдХреЛрдб рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдбреЗрдореЛ рдХреЛрдб рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛, DnDStudy рдШрдЯрдХ рдпрд╣рд╛рдВ рдПрдХ рдкреГрд╖реНрда рдШрдЯрдХ рд╣реИ: http://notlouieagain.com/~amoenk/dnd/js/pages/DnDStudy.react.js
рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдФрд░ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ IngredientGroup
рдЕрдВрджрд░ DnDStudy
рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рд╕рд░рдгреА рдХреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, Ingredient
рдЕрдВрджрд░ IngredientGroup
рд╕рдорд╛рди рдХреБрдЫ рдЕрджреНрд╡рд┐рддреАрдп рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдареАрдХред рдореИрдВ рддрдм рдЧрд▓рдд рдерд╛ред
@gaearon рдХреНрдпрд╛ рдЖрдк рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
isDragging
рд▓рд┐рдП рдШрдЯрдХ рдЯреНрд░реА рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдбреНрд░реИрдЧ рд╕реЛрд░реНрд╕ рдкрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ isDragging
рд▓рд╛рдЧреВ рдХрд░реЗрдВред
const ingredientSource = {
beginDrag(props) {
return { ingredient: props.ingredient };
},
isDragging(props, monitor) {
return props.ingredient === monitor.getItem().ingredient;
}
};
DragSource
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВ :
isDragging(props, monitor)
: рд╡реИрдХрд▓реНрдкрд┐рдХред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдбреНрд░реИрдЧ рдСрдкрд░реЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЗрд╡рд▓ рдбреНрд░реИрдЧ рд╕реЛрд░реНрд╕ рдХреЛ рдбреНрд░реИрдЧрд┐рдВрдЧ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдПрдХ рдХрд╕реНрдЯрдоisDragging
рдкрджреНрдзрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣props.id === monitor.getItem().id
рдЬреИрд╕рд╛ рдХреБрдЫ рд▓реМрдЯрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рддрдм рдХрд░реЗрдВ рдЬрдм рдореВрд▓ рдШрдЯрдХ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рджреМрд░рд╛рди рдЕрдирдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╕рд╛рде "рдкреБрдирд░реБрддреНрдерд╛рди" рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдПрдХ рдХрд╛рд░реНрдб рдХреЛ рдХрд╛рдирдмрди рдмреЛрд░реНрдб рдореЗрдВ рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЦреАрдВрдЪреА рдЧрдИ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦреЗ-рднрд▓реЗ рд╣реА рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдШрдЯрдХ рдЕрдирдорд╛рдЙрдВрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реВрдЪреА рдореЗрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдПрдХ рдЕрд▓рдЧ рдорд╛рдЙрдВрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред _рдиреЛрдЯ: рдЖрдк рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдЕрдВрджрд░monitor.isDragging()
рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред_
рдХреНрдпрд╛ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ?
рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо! рдбреЙрдХреНрд╕ рдореЗрдВ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред
рдЖрдкрдХреА рд╕рднреА рдорджрдж рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдЯрд┐рдХрдЯ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ред
рдХреЛрдИ рджрд┐рдХреНрдХрдд рдирд╣реАрдВ рд╣реИред рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рд╣рд╛рдБ! http://notlouieagain.com/ рдХреЗ рд▓рд┐рдВрдХ рдкреНрд░рддрд┐рд╕рд╛рдж рдирд╣реАрдВ рджреЗ рд░рд╣реЗ рд╣реИрдВ ...
рдореБрдЭреЗ рдЕрдкрдиреЗ рдореБрджреНрджреЗ рдХрд╛ рдореВрд▓ рдХрд╛рд░рдг рдорд┐рд▓рд╛ред рдореБрдЭреЗ рдЕрдкрдиреЗ DropTargets рдФрд░ DragSources рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП DragDropContextProvider рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдиреАрдЪреЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред
http://react-dnd.github.io/react-dnd/docs-drag-drop-context-provider.html
export default class YourApp {
render() {
return (
<DragDropContextProvider backend={HTML5Backend}>
/* ... */
</DragDropContextProvider>
)
}
}
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореБрдЭреЗ рдЕрдкрдиреА рдкреВрд░реА рдХрдХреНрд╖рд╛ рдХреЛ рдиреАрдЪреЗ рдХреА рддрд░рд╣ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдбреНрд░реИрдЧрдбреНрд░реЙрдкрдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
http://react-dnd.github.io/react-dnd/docs-drag-drop-context.html
class YourApp {
/* ... */
}
export default DragDropContext(HTML5Backend)(YourApp)
рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреЛ рддреБрд░рдВрдд рдареАрдХ рдХрд░ рджрд┐рдпрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
isDragging
рд▓рд┐рдП рдШрдЯрдХ рдЯреНрд░реА рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдбреНрд░реИрдЧ рд╕реЛрд░реНрд╕ рдкрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗisDragging
рд▓рд╛рдЧреВ рдХрд░реЗрдВредDragSource
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВ :рдХреНрдпрд╛ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ?