React-dnd: рдХрд┐рд╕реА рддреГрддреАрдп-рдкрдХреНрд╖ рдШрдЯрдХ рдХреЛ рдбреНрд░реИрдЧ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рджрд┐рд╕ре░ 2015  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: react-dnd/react-dnd

рдореИрдВ рдбреНрд░реИрдЧ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдШрдЯрдХ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╕реЗ <ListGroupItem> ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЬрдм рдореИрдВ рдЙрд╕ рдкрд░ connectReactSource рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ

рдХреЗрд╡рд▓ рдореВрд▓ рддрддреНрд╡ рдиреЛрдбреНрд╕ рдХреЛ рдЕрдм рдХрдиреЗрдХреНрдЯрдбреНрд░реИрдЧрд╕реЛрд░реНрд╕ () рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдпрд╛ рддреЛ ListGroupItem рдХреЛ a . рдореЗрдВ рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВ

, рдпрд╛ рдЗрд╕реЗ рдбреНрд░реИрдЧ рд╕реЛрд░реНрд╕ рдпрд╛ рдбреНрд░реЙрдк рдЯрд╛рд░рдЧреЗрдЯ рдореЗрдВ рд╣реА рдмрджрд▓ рджреЗрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ <div> рдореЗрдВ рд▓рдкреЗрдЯрддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдореЗрд░реЗ рдорд╛рд░реНрдХрдЕрдк рдФрд░ рд╕реНрдЯрд╛рдЗрд▓ рдХреЛ рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рджреЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ <li> рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЗрд╕реЗ рдбреНрд░реИрдЧ рд╕реЛрд░реНрд╕ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдШрдЯрдХ рдХреЗ рд╕реНрд░реЛрдд рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╕рд╣реА рд╣реИ?

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

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧреБрдЧрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣ рдореБрджреНрджрд╛ рд╣реИ :-)

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ! рдореБрд╕реНрдХрд░рд╛рд╣рдЯ:

рдпрджрд┐ рдЖрдк connect*() рдХреЙрд▓ рдХреЛ рдЕрдкрдиреЗ render() s рдореЗрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛рдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдереЛрдбрд╝реА рд╕рдЯреАрдХрддрд╛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд╣реА рдЙрдкрд░реЛрдХреНрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд:

ref={instance => {
  const node = findDOMNode(instance);
  connectDragSource(node);
  connectDropTarget(node);
}}

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

рдЕрдЪреНрдЫрд╛ рдкреНрд░рд╢реНрдиред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

import { findDOMNode } from 'react-dom';

class DraggableListGroupItem extends Component {
  render() {
    const { connectDragSource, ...rest } = this.props;
    return (
      <ListGroupItem
        {...rest}
        ref={instance => connectDragSource(findDOMNode(instance))}
      />
    );
  }
}

export default DragSource(...)(DraggableListGroupItem);

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ connect*() рдлрд╝рдВрдХреНрд╢рди рдпрд╣ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреНрдпрд╛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдпрд╛ рддреЛ рдШреЛрд╖рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдПрдХ рдбреЛрдо рд░рд┐рдПрдХреНрдЯ рддрддреНрд╡ рдкрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдмрджрд▓реЗ рдореЗрдВ рдПрдХ рдбреЛрдо рд░рд┐рдПрдХреНрдЯ рддрддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ) рдпрд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ (рдЙрдиреНрд╣реЗрдВ рдбреЛрдо рдиреЛрдб рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЗрдВ null рд╕рд╛рде рдХреЙрд▓ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ-рдЬреИрд╕реЗ рд░реЗрдлрд░реА рдХрд╛рдо )

(рдпрд╣ рдЖрдкрдХреЛ рдбреНрд░реИрдЧ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп DOM рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рднреА рджреЗрддрд╛ рд╣реИтАФрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк findDOMNode() рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдиреЛрдб рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдЙрдкрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЖрдВрддрд░рд┐рдХ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдмреБрд░рд╛ рд╣реИ рдХрд┐рд╕реА рддреГрддреАрдп-рдкрдХреНрд╖ рдШрдЯрдХ рдХреА DOM рд╕рдВрд░рдЪрдирд╛ред)

рдпрд╣ рдореЗрд░реЗ рдХрд╛рдо рдирд╣реАрдВ рдЖрдпрд╛ред рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдЕрдм рд╕рд╣реА рд╣реИ рд▓реЗрдХрд┐рди рддрддреНрд╡ рдЦреАрдВрдЪрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдореБрдЭреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

Unhandled promise rejection TypeError: (0 , _reactDom2.default) is not a function(тАж)

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛

import findDOMNode from 'react-dom';

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп

import { findDOMNode } from 'react-dom';

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ react-dom рдХрд╛ рдХреЛрдИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рдХреЗ рдирд┐рд░реНрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд┐рд╕реЗ findDOMNode рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдФрд░ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдкрд░ рдЕрдзрд┐рдХ: http://exploringjs.com/es6/ch_modules.html

рдореИрдВ рдПрдХ рдЫреЛрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреЗ рдмреАрдЪ рдореЗрдВ рдерд╛ рд▓реЗрдХрд┐рди рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдмрдЧ рдкрдХрдбрд╝ рд▓рд┐рдпрд╛!

рдореБрдЭреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдФрд░ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореБрдЭреЗ рдХрд┐рд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдбреАрдмрдЧ рдЯреВрд▓ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджреЗрдиреЗ рдореЗрдВ рдорд╣рд╛рди рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЕрдм рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╕рдорд╕реНрдпрд╛ рдкрд░ рдХреИрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЗрд╕реЗ рд╡реЗрдмрдкреИрдХ рджреНрд╡рд╛рд░рд╛ рдЙрд▓рдЭрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рд╕рдмрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

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

рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕рдВрджреЗрд╢ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧреБрдЧрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣ рдореБрджреНрджрд╛ рд╣реИ :-)

рд╡реИрд╕реЗ рдореИрдВ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реВрдВ рдФрд░ рдПрдХ рдмрд┐рдВрджреБ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ <div> рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ ред рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ connectDragSource() рдХреЛ рдХрд┐рд╕реА рднреА DOM рддрддреНрд╡ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ- <div> , <li> , рдпрд╛ рдХреБрдЫ рдФрд░ред рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧреБрдЧрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣ рдореБрджреНрджрд╛ рд╣реИ :-)

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ! рдореБрд╕реНрдХрд░рд╛рд╣рдЯ:

рдпрджрд┐ рдЖрдк connect*() рдХреЙрд▓ рдХреЛ рдЕрдкрдиреЗ render() s рдореЗрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛рдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдереЛрдбрд╝реА рд╕рдЯреАрдХрддрд╛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд╣реА рдЙрдкрд░реЛрдХреНрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд:

ref={instance => {
  const node = findDOMNode(instance);
  connectDragSource(node);
  connectDropTarget(node);
}}

рдЗрд╕ рдкрд░ 2 рдкреНрд░рд╢реНрди:
Q1. рдХреНрдпрд╛ рдЖрдк рддреАрд╕рд░реЗ рднрд╛рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдбреНрд░реИрдЧ рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдПрдХреНрдЯрд╕реНрдЯреНрд░реИрдк "рдХрдВрдЯреЗрдирд░" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдПрдХ рдкреГрд╖реНрда рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рдкрдВрдХреНрддрд┐" рдпрд╛ рдЙрд╕рдХреЗ рдЕрдВрджрд░ рдХреЗ рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рдкреНрд░рд╢реНрди реи. рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ findDOMNode рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХреЛрдВ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рддреГрддреАрдп рдкрдХреНрд╖ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдбреНрд░реИрдЧ/рдбреНрд░реЙрдк рдХреИрд╕реЗ рдХрд░реЗрдВ рдпрджрд┐ рд╡реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИрдВ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

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

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

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

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