рдШрдЯрдХреЛрдВ рдХреЗ рдЕрдВрджрд░ рдкрд╛рда рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ HTML5 рд╡рд┐рд╢реЗрд╖рддрд╛ draggable
рд╕реЗрдЯ рд╕реЗ true
( рдЗрд╕ рдЬреНрдЮрд╛рдд рдмрдЧ рдХреЗ рдХрд╛рд░рдг ) рд╣реИрдВред рдореИрдВ draggable
false
onFocus
рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ true
onBlur
рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╡рд╛рдкрд╕ рд╕реЗрдЯ рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБ (рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣рд╛рдБ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рд╣реИ ), рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбрдВрдб рдХрд╛ рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рддреБрд░рдВрдд true
рд╡рд╛рдкрд╕ рд╕реЗрдЯ рд╣реИред
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдЗрд╕ рдмрдЧ рдкрд░ рдкреНрд░рдЧрддрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдХреНрдпрд╛ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбрдВрдб рдореЗрдВ рдПрдХ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ? рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрджреНрдпрддрди рдХрд░реВрдБрдЧрд╛ рдЕрдЧрд░ рдореИрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реВрдБред
рдЗрд╕рдХрд╛ рдореВрд▓ # 256 рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВ рдПрдХ рдХрд╛рдВрдЯреЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рд╕реАрдзреЗ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ draggable
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реВрдВред
рдпрджрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдкреАрдЖрд░ рдЖрдкрдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рднреА рдмрддрд╛рдПрдВ: https://github.com/gaearon/react-dnd/pss
рдХреГрдкрдпрд╛ рдпрд╣ рди рднреВрд▓реЗрдВ рдХрд┐ HTML5 рдмреИрдХрдПрдВрдб рдХреЗрд╡рд▓ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдЖрдк рдПрдирдкреАрдПрдо рдкрд░ рдЕрдкрдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рдПрдХ рдПрдХрд▓ рдлрд╛рдЗрд▓ рд╣реИ) рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдмрд╛рдХреА рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рд░реЗрдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЖрдкрдХреЛ onFocus
рдФрд░ onBlur
рдореЗрдВ рдПрдХ рд╕реНрдЯреЗрдЯ рд╡реИрд░рд┐рдПрдмрд▓ рдЯреЙрдЧрд▓ рдХрд░рдХреЗ рдЗрд╕ рдмрдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЖрдкрдХреЗ render
рдлрд╝рдВрдХреНрд╢рди рдХреЛ _not_ рдкрд░ рдХреЙрд▓ рдХрд░рдХреЗ connectDragSource()
рдЗрдирдкреБрдЯ рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП :
render() {
const element = <div><textarea onFocus=... /></div>;
return this.state.editing ? element : this.props.connectDragSource(element);
}
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЖрдкрдХреЛ
onFocus
рдФрд░onBlur
рдореЗрдВ рдПрдХ рд╕реНрдЯреЗрдЯ рд╡реИрд░рд┐рдПрдмрд▓ рдЯреЙрдЧрд▓ рдХрд░рдХреЗ рдЗрд╕ рдмрдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЖрдкрдХреЗrender
рдлрд╝рдВрдХреНрд╢рди рдХреЛ _not_ рдкрд░ рдХреЙрд▓ рдХрд░рдХреЗconnectDragSource()
рдЗрдирдкреБрдЯ рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП :