React-dnd: рдзреНрдпрд╛рди рдореЗрдВ рди рдЖрдпрд╛ рддреНрд░реБрдЯрд┐: рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЙрд▓реНрд▓рдВрдШрди: рдПрдХ рд╡реИрдз рд▓рдХреНрд╖реНрдп рдорд┐рд▓рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рдЬреБрд▓ре░ 2015  ┬╖  20рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: react-dnd/react-dnd

рдореИрдВрдиреЗ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЙрд╕ рдХреНрд░рдордмрджреНрдз рд╕реВрдЪреА рдореЗрдВ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░рдордмрджреНрдз рд╕реВрдЪреА рдФрд░ рджреВрд╕рд░реА рд╕реВрдЪреА рд▓рд╛рдЧреВ рдХреА рд╣реИред рдРрдк рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдЙрд╕ рдХреНрд░рдордмрджреНрдз рд╕реВрдЪреА рдореЗрдВ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

Uncaught Error: Invariant Violation: Expected to find a valid target
.n @ app.js:50803
t.canDropOnTarget @ app.js:50804
(anonymous function) @ app.js:50804
t.handleTopDragEnter @ app.js:50804

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдордЬрд╝рдмреВрддреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ dist/ReactDnD.min.js ред

рдХреЛрдИ рд╕рдВрдХреЗрдд? рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

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

рдмрд╕ рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдФрд░ рдореБрджреНрджреЗ рдкрд░ рдареЛрдХрд░ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдереА рдЬрдм рдПрдХ рдХреНрд░рдордмрджреНрдз рд╕реВрдЪреА рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдореЗрдВ рдЗрд╕рдХреА рдЖрдИрдбреА рдФрд░ рд╕реВрдЪреА рдореЗрдВ рдЗрд╕рдХреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ рдмрдирд╛ рдПрдХ рдХреБрдВрдЬреА рд╣реЛрддреА рд╣реИред
рддрддреНрд╡ рдХреЛ рдШрд╕реАрдЯреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪрд┐рдд (рдЕрд░реНрдерд╛рдд, рд╕реБрд╕рдВрдЧрдд) рдХреБрдВрдЬреА рд╕реЗрдЯ рдХрд░рдХреЗ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

рдХреНрдпрд╛ рдЖрдк рдЕрдкрдирд╛ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╣рд╛рдБ, рдХреГрдкрдпрд╛ рдХрд╣реАрдВ рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп рдХреЛрдб рдбрд╛рд▓реЗрдВред
рдЗрд╕рд╕реЗ рдЖрдк рдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдирдкреАрдПрдо рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред рдЬрд┐рд╕ рд╡рд╕реНрддреБ рдХреЛ рдореИрдВрдиреЗ beginDrag рдореЗрдВ рд▓реМрдЯрд╛рдпрд╛ рдЙрд╕рдореЗрдВ рдПрдХ рдЖрдИрдбреА рдирд╣реАрдВ рдереАред рд╕рдВрднрд╡рдд: рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдереА, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд░рд┐рдПрдХреНрдЯ-рдбреАрдПрдирдбреА рдореЗрдВ рд╡рд╣ рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рдереАред

рджрд┐рд▓рдЪрд╕реНрдк, рдзрдиреНрдпрд╡рд╛рдж! рдЬрдм рддрдХ рдпрд╣ рдПрдХ рд╕рд╛рджрд╛ рд╡рд╕реНрддреБ рд╣реИ рддрдм рддрдХ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ beginDrag() рд░рд┐рдЯрд░реНрди рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╡рд╛рд╣ рдХреНрдпрд╛ рдерд╛ред

рдкреБрд░рд╛рдиреЗ рдзрд╛рдЧреЗ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдкреВрд░реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдВрджрд░реНрдн рд╣реИ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд┐рд╕реА рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдпреЛрдЧреА рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдереА, рд▓реЗрдХрд┐рди рдореБрджреНрджрд╛ рдпрд╣ рдерд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдШрдЯрдХ рдерд╛ (рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдб рдХреЗ рд╕рдорд╛рди) рдЬрд┐рд╕реЗ _both_ рдбреНрд░реИрдЧ рдФрд░ рдбреНрд░реЙрдк рд░реИрдкрд░ рд╕реЗ рд╕рдЬрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЬрдм simulateBeginDrag рд╢реБрд░реВ рд╣реБрдЖ, рддреЛ рдЙрд╕рдиреЗ _рдбреНрд░реЙрдк рд▓рдХреНрд╖реНрдп_ (рдбреНрд░реИрдЧ рд╕реНрд░реЛрдд рдХреЗ рдмрдЬрд╛рдп) рдХреЛ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХреЛ рднреЗрдЬрд╛, рдЬреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡рд┐рдлрд▓ рд░рд╣рд╛ред рд╣реИрдВрдбрд▓рд░ рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рд╕рдорд╛рдзрд╛рди рдПрдХ рд╕реНрддрд░ рдЧрд╣рд░рд╛ ( getDecoratedComponentInstance() ) рдЬрд╛рдирд╛ рдерд╛ред

@yannisbarlas рдорд╣рд╛рди рдЦреЛрдЬред рдореИрдВ рдЙрд╕реА рд╕рдЯреАрдХ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рд╢рд╛рдпрдж рдкрд░реАрдХреНрд╖рдг рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

@yannisbarlas рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрди рдзрдиреНрдпрд╡рд╛рдж! рдмрд╣реБрдд рдирд┐рд░рд╛рд╢рд╛ рдореЗрдВ рдореЗрд░реА рдорджрдж рдХреА :)

рдмрд╕ рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдФрд░ рдореБрджреНрджреЗ рдкрд░ рдареЛрдХрд░ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдереА рдЬрдм рдПрдХ рдХреНрд░рдордмрджреНрдз рд╕реВрдЪреА рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдореЗрдВ рдЗрд╕рдХреА рдЖрдИрдбреА рдФрд░ рд╕реВрдЪреА рдореЗрдВ рдЗрд╕рдХреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ рдмрдирд╛ рдПрдХ рдХреБрдВрдЬреА рд╣реЛрддреА рд╣реИред
рддрддреНрд╡ рдХреЛ рдШрд╕реАрдЯреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪрд┐рдд (рдЕрд░реНрдерд╛рдд, рд╕реБрд╕рдВрдЧрдд) рдХреБрдВрдЬреА рд╕реЗрдЯ рдХрд░рдХреЗ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

@yannisbarlas рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рд╣реИ?

рджреЗрд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ @damiangreen , рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдИрдореЗрд▓ рдореЗрд░реЗ рдареАрдХ рдкреАрдЫреЗ рд╕реЗ рдЙрдбрд╝ рдЧрдпрд╛ред

рдХреЛрдб рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╣ рдХреБрдЫ рд╕рдордп рд╣реЛ рдЧрдпрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ

рдпрджрд┐ рдХреЛрдИ рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрд┐рд╕ рд╕реВрдЪреА рдХрд╛ рдЖрдк рдорд╛рдирдЪрд┐рддреНрд░рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рдХреЗ рддрддреНрд╡ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдХреБрдВрдЬреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рд╕реВрдЪреА рдореЗрдВ рдЖрдЗрдЯрдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ Redux рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬ рд░рд╣рд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдореИрдк рдХрд┐рдП рдЧрдП рддрддреНрд╡ рдХреА рдХреБрдВрдЬреА рдкреНрд░рджрд╛рди рдХрд░ рд░рд╣рд╛ рдерд╛:

blocks.map((block, idx) => {
  <React.Fragment key={`${block.name}_${idx}`}>
    ...
  <React.Fragment />
})

рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ idx рдордХреНрдЦреА рдкрд░ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @chulanovskyi
рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛:
JSX arr.map((item, idx) => ( <Item item={item} // key={`${idx}_${item.id}`} // this was busted because idx key={item.key} // when adding this to the array elsewhere i use a count for uniqueness index={idx} > </Item> ))

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рддреНрд░реБрдЯрд┐ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рдбреНрд░реЙрдк рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИ - рдЬрдм рдЕрдВрддрд┐рдо рдЖрдЗрдЯрдо рдХреЛ рдбреНрд░реЙрдк рдХреНрд╖реЗрддреНрд░ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рд╣реЛрддреА рд╣реИ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдкрд╡рд╛рдж рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдЗрдЯрдо рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдХреНрд╖реЗрддреНрд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдореВрд╣ рдПрдХ рд╣реА рдЖрдЗрдЯрдо рд╕реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рд╣рдореНрдо рдмрджрд▓рддреЗ рд╣реИрдВ

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рддреНрд░реБрдЯрд┐ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рдбреНрд░реЙрдк рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИ - рдЬрдм рдЕрдВрддрд┐рдо рдЖрдЗрдЯрдо рдХреЛ рдбреНрд░реЙрдк рдХреНрд╖реЗрддреНрд░ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рд╣реЛрддреА рд╣реИ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдкрд╡рд╛рдж рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдЗрдЯрдо рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдХреНрд╖реЗрддреНрд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдореВрд╣ рдПрдХ рд╣реА рдЖрдЗрдЯрдо рд╕реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рд╣рдореНрдо рдмрджрд▓рддреЗ рд╣реИрдВ

рдирдорд╕реНрддреЗ @DominicTobias
рдореЗрд░реЗ рдкрд╛рд╕ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рдбреНрд░реЙрдк рдХреНрд╖реЗрддреНрд░ рднреА рд╣реИрдВред
рдЖрдкрдиреЗ рдпрд╣ рдХреИрд╕реЗ рдлрд┐рдХреНрд╕ рдХрд┐рдпрд╛?

@рд░реЗрдордВрдб-рдУрдВрдЧ

рдореЗрд░реЗ рдкрд╛рд╕ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рдбреНрд░реЙрдк рдХреНрд╖реЗрддреНрд░ рднреА рд╣реИрдВред
рдЖрдкрдиреЗ рдпрд╣ рдХреИрд╕реЗ рдлрд┐рдХреНрд╕ рдХрд┐рдпрд╛?

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдлрд┐рд░ рд╕реЗ рдкреИрд░реЗрдВрдЯ (рдКрдкрд░реА рд╕реНрддрд░) рдШрдЯрдХ рдмрдирд╛рдпрд╛ рд╣реИред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рдЦреЛрдИ рд╣реБрдИ рдЖрдИрдбреА (рдЙрд╕рдХреА рдЖрдВрддрд░рд┐рдХ рдЖрдИрдбреА) рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рддреНрд░реБрдЯрд┐ рд╣реИред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдерд╛, рдХрд┐ рдореИрдВрдиреЗ рд░реЗрдбреНрдпреВрд╕рд░ рдореЗрдВ рдЕрджреНрдпрддрди рд╕реНрдерд┐рддрд┐ рдХреЗ рджреМрд░рд╛рди рдореВрд▓ рдЗрдХрд╛рдИ рдХреЗ id рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ (рдкрдВрдХреНрддрд┐ рдХреЗ рднреАрддрд░ рдХреЙрд▓рдо рд▓реЗ рдЬрд╛рдПрдВ, рдФрд░ рдХреЙрд▓рдо рдЕрдкрдиреЗ рд╕реНрдерд╛рди рдмрджрд▓рддреЗ рд╕рдордп рдкрдВрдХреНрддрд┐ рдЖрдИрдбреА рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ)ред updating id functionality рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рднреА рдпрд╣ рдореБрджреНрджрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдбреНрд░реЙрдк рд▓рдХреНрд╖реНрдп рдХреИрдирдбреНрд░реЙрдк рдкрд░ рдЭреВрдард╛ рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдХрд┐рд╕реА рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓рд╛рдкрддрд╛ рдЖрдИрдбреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдИрдбреА рдХрд╣рд╛рдВ рд░рдЦреА рдЬрд╛рдП?

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЯреНрд╡рд┐рдХ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдЖрдк рдЗрд╕реЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЦреАрдВрдЪрдХрд░/рдЫреЛрдбрд╝рдХрд░ рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://codesandbox.io/s/broken-pher-qf0f2?file= /src/Container.jsx

рдореИрдВрдиреЗ рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рднреА рдмрдирд╛рдпрд╛ (рд╢рд╛рдпрдж рдореБрдЭреЗ рдЕрднреА рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛?) #2693

рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдареАрдХ рдХрд┐рдпрд╛:

рдореЗрд░реЗ рдХреЛрдб рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рдерд╛

const ParentOfCards = () => {    

     const [ cards, setCards ] = useState([ ... ])

    const CardComponent = ({ card, index }) => {
       return (/**/)
    }
    return (
        <div>
            { cards.map( CardComponent ) }
        </div>
    )

}

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЖрдк CardComponent рдХреЛ ParentOfCards CardComponent рдЕрдВрджрд░ рдирд╣реАрдВ рдбрд╛рд▓ рд╕рдХрддреЗ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИ), рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ CardComponent рдХреЛ ParentOfCards рд╕реЗ рдЕрд▓рдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛

const ParentOfCards = () => {    

     const [ cards, setCards ] = useState([ ... ])


    return (
        <div>
            { cards.map( CardComponent ) }
        </div>
    )

}

const CardComponent = ({ card, index }) => {
       return (/**/)
}

рдФрд░ рдЕрдм (рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рджреЛ рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж: рд╕реА) рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдореИрдВ

@marcelomrtnz рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж
рдЖрдкрдиреЗ рдореЛрдмрд╛рдЗрд▓ рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдореЗрд░рд╛ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛рдпрд╛

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

рдореБрдЭреЗ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЖрдкрдХреА рдкреЛрд╕реНрдЯ рд╕реЗ рдорд┐рд▓рд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @marcelomrtnz

рдореЗрд░реЗ рд╕рд╛рде рднреА рд╡рд╣реА рджрд┐рдХреНрдХрдд рд╣реИред https://codesandbox.io/s/proud-wind-hklt6?file=/src/CreateForum.jsx
рдпрд╣рд╛рдБ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╣реИред рдЖрдЗрдЯрдо 1ba рдХреЛ рдЖрдЗрдЯрдо 1 рдкрд░ рдЦреАрдВрдЪреЗрдВ, рдФрд░ рдлрд┐рд░ рдЖрдЗрдЯрдо 1ba рдХреЛ рдлрд┐рд░ рд╕реЗ рдиреАрдЪреЗ рдЦреАрдВрдЪреЗрдВред

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

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

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

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

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

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

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