React-dnd: рд░рд┐рдПрдХреНрдЯ 16.3 createRef рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реЗрдлрд░реА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: react-dnd/react-dnd

рдХреЙрд▓рдмреИрдХ рд░реЗрдлрд░реА рдХреЗ рдмрдЬрд╛рдп рдирдП createRef API (React 16.3.0 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡ рдХреЗ рд╕рд╛рде ConnectDragSource рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдРрдк рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ: TypeError: previousRef is not a function ред

https://github.com/facebook/react/pull/12162

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

рд╡рд╣реА рдореБрджреНрджрд╛ред рдХреНрдпрд╛ рдореБрдЭреЗ рдкреБрд░рд╛рдиреЗ рдХреЙрд▓рдмреИрдХ рд░реЗрдлрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

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

рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ:

    return (0, _react.cloneElement)(element, {
        ref: function ref(node) {
            newRef(node);

            if (previousRef) {
                previousRef(node); // << fails with new refs
            }
        }
    });

рд╡рд╣реА рдореБрджреНрджрд╛ред рдкрд╣рд▓реА рдмрд╛рд░ рдореБрдЭреЗ рдЕрдВрддрддрдГ рдирдП рд░реЗрдлрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рдорд┐рд▓рд╛ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рд░рд╛рд╕реНрддреЗ рдореЗрдВ рд╣реИред

рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВ findDOMNode рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рд░реЗрдлрд░реА рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдкреВрд░реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рдореЙрдбрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВред рдЬрдм рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдирдпрд╛ createRef рдФрд░ withRef рд╣реИред рдирдпрд╛ рдлреЙрд░рд╡рд░реНрдбрд░реЗрдл рдПрдкреАрдЖрдИ ред рдФрд░ рдХрдИ рдПрдкреАрдЖрдИ рд░реЗрдВрдбрд░ рдкреНрд░реЙрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд┐рдЫрд▓рд╛ рд░реЗрдл current рд╕рдВрдкрддреНрддрд┐ рд╡рд╛рд▓рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдФрд░ рдЗрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реЗрдЯ рдХрд░реЗрдВред

рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЬрдмрдХрд┐ рдЕрднреА рднреА createRef() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдореИрдВ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЦреЛрдж рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЬреЛ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдпрд╣рд╛рдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдореИрдВ рднреА рдЗрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
@darthtrevino https://codesandbox.io/s/733onvqwl6 рд╢рд╛рдпрдж рдпрд╣ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рд╡рд╣реА рдореБрджреНрджрд╛ред рдХреНрдпрд╛ рдореБрдЭреЗ рдкреБрд░рд╛рдиреЗ рдХреЙрд▓рдмреИрдХ рд░реЗрдлрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

+1
React.createRef() рдФрд░ ref.current рдХрд░рдХреЗ рдРрдк рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛ред

рдпрд╣ рдХрдм рдареАрдХ рд╣реЛрдЧрд╛?

рдЕрднреА рднреА рддрдп рдирд╣реАрдВ рд╣реИ: /

рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рдмрд╛рдж рдХреБрдЫ рд╕рдордп рджреВрдВрдЧрд╛

рдореИрдВ рдПрдХ рдЕрдиреНрдп рд░рд┐рдХреНрдд div рдХреЗ рдЕрдВрджрд░ ref div рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд░рдХреЗ рд╕реБрдЭрд╛рдП рдЧрдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред
рдЙрджрд╛рд╣рд░рдг:

 <div>
        <div
          style={{
            position: "relative",
            borderStyle: "dashed",
            width: 300,
            height: 200,
            position: "relative"
          }}
          ref={this.myRef}
        />
      </div>

ЁЯСН рдЗрд╕ @darthtrevino рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯред рдПрдХ рдЕрджреНрдпрддрди рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛

@darthtrevino рдХреЛ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдмрд╛рдж рдореЗрдВ рдХрд╛рдЯрд╛ рд╣реИ

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

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

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

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

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

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

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