å é±ãç§ã¯ããããã®åé¡ãéããŠãããã€ãã®ãªãªãŒã¹ãããã·ã¥ããŸãããããŠãŒã¶ãŒã®ããŒãºãç解ããããšãšåãé¢ããŠãããè¡ãã®ã¯é£ããã§ãã ãã®ãããžã§ã¯ãã«ã¯å€ãã®æããããŸãããåé¡ãçºçããå Žåã圱é¿ãåãã人ã®æ°ãšããã«ãªã¯ãšã¹ããå¢ããªãçç±ã¯ããããŸããã
ã³ãŒãããŒã¹ã¯ææžåãããŠããããéšå€è ãè è¿«ããå¯èœæ§ããããŸããããã¯ç§ãããç解ããŠããããšã§ãã ããããä¿®æ£ã®ãã«ãªã¯ãšã¹ãããã以äžåãåããªãçç±ã§ããïŒ ãããšããæãç§ãä¿¡ããããã»ã©ãããžã§ã¯ããåºã䜿ãããŠããªãããã§ããïŒ
React DnDã®çŸåšã®ãŠãŒã¶ãŒã«ãããã«ãã§ãã¯ã€ã³ããŠããã€ãã®èšèãèšã£ãŠããããããšæããŸãã
ããã¯ããã®ãããžã§ã¯ãããšã³ã·ã¹ãã ã«ã©ã®ããã«é©åãããããããŠç§ã®èªç±æéã®ã©ãã ããããã«å²ãåœãŠã䟡å€ãããããç解ããã®ã«åœ¹ç«ã¡ãŸãã ããããšãïŒ
_- React DnDã䜿çšããŠãã補åã¯äœã§ããïŒ_
ãããããªã¢ããªïŒããã°ãããŒããåºå¹¹æ¥åã¢ããªïŒã§äœ¿ã£ãŠããŸã
_-ã©ã®ããã圹ã«ç«ã¡ãŸããïŒ_
React DnDã®åã«ãç§ã¯èŠã€ãããã¹ãŠã®DnDãœãªã¥ãŒã·ã§ã³ããreactãšjqueryããŒã¹ã®äž¡æ¹ã§è©ŠããŸããããReactDnDã¯äœãã€ã«ãå ã«åºãŠããŸãã
_-ã©ã®ãããã®é »åºŠã§åé¡ãçºçããã©ãã»ã©ã€ã©ã€ã©ããŸããïŒ_
1.0以éãåé¡ã¯çºçããŠããŸããã ç§ã¯èªåã®è£œåã§ææ°ã®ãã©ãŠã¶ã®ã¿ããµããŒãããŠããããšã«æ³šæããŠãã ããã
_-ã©ã®æ©èœã«é¢å¿ããããŸããïŒ_
ç§ã¯ãã¹ãŠã®æ©èœããããŸããŸãªåéã§ããŸããŸãªçµã¿åããã§äœ¿çšããŠããŸãã
_-補åã®ã¹ã¯ãªãŒã³ã·ã§ãããããã€ãæ·»ä»ã§ããŸããïŒ_
æšæ¥ããããã©ã€ããŒããããžã§ã¯ããšçµ±åãããšããïŒä»ã¯ç»é¢ã衚瀺ã§ããŸãããç³ãèš³ãããŸããïŒãæ¢åã®ããã¥ã¡ã³ãã¯ãã°ããããšæããŸããã ã¢ãããŒãã¯ã¯ãªãŒã³ã§ãç解ãããããæ¡åŒµãç°¡åã§ãå šäœçã«ãã¬ã³ããªãŒã§ãã
æ£çŽãªãšããããããã§åé¡ãçºçããããšã¯ãããŸããã ãã®ã·ã³ãã«ããæ¬åœã«æ倧ã®æ©èœã ãšæããŸããããã«ãHOCã®ãããªãã¹ããã©ã¯ãã£ã¹ã«åããŠèµãåãããã«ããã䜿çšãã人ã ã奚å±ããŸãã
React DnDã䜿çšããŠãã補åã¯äœã§ããïŒ
TreasureDataã®æ°ããWebã³ã³ãœãŒã«ã§äœ¿çšããŠããŸãã å人çãªãããžã§ã¯ãã«ã䜿çšããŸããã
ã©ãããã圹ã«ç«ã¡ãŸããïŒ
éåžžã«äŸ¿å©ã ããã¯ãç§ã䜿çšããäžã§æãåªãããã©ãã°ã¢ã³ãããããã©ã€ãã©ãªã§ãã é«åºŠãªãã©ãã°ã¢ã³ãããããæäœãç°¡åã«å®è£ ããããã«äœ¿çšã§ãããšç¢ºä¿¡ããŠããŸãã
ã©ã®ãããã®é »åºŠã§åé¡ãçºçããã©ãã»ã©ã€ã©ã€ã©ããŸããïŒ
ã©ã€ãã©ãªã䜿çšãããã³ã«ããã¹ãŠãã©ã®ããã«çµã¿åããããŠããããã€ãŸãåéšåãã©ãã«è¡ããäœãããã®ããæãåºãã®ã«æéãããããŸãã ããã¯ãäœåºŠã䜿çšããåŸã§ãçºçããŸãã
ããããããã¹ãŠã®ããŒãã衚瀺ããããã®èŠèŠåããããšãèŠãããããªããŸãã
å šäœãšããŠãå³æžé€šã¯ç§ãå¿ èŠãšãããã¹ãŠã®ããšãããŠããããã§ãã
ã©ã®æ©èœã«é¢å¿ããããŸããïŒ
劥åœæ§ïŒ ãã©ãã°ã¢ã³ãããããã«é¢ããç§ã®ä»¥åã®çµéšã¯ããªã貧匱ã§ããã©ãã°ã¢ã³ãããããé¢é£ã®ã³ãŒãããã¹ããã人ã¯èª°ãããŸããã§ããã
ç§ã¯ã¢ãã€ã«ãµããŒããäœãããŠããŸãããããã¹ã¯ããããšã¢ãã€ã«ã®äž¡æ¹ãã©ã®ããã«ã¿ãŒã²ããã«ãããããããŸããã
ç§ã¯react-dnd-touch-backendãèŠãŠããŸããããäž¡æ¹ãã©ã®ããã«ããã¯ã¹ãããããããŸããã
補åã®ã¹ã¯ãªãŒã³ã·ã§ãããããã€ãæ·»ä»ã§ããŸããïŒ
https://gfycat.com/ScientificEvilAmericanbadger
ããã¯åºæ¬çã«ç§ãéãã§ããã ãã§ãã react-dndã䜿çšãããšããã¡ã€ã«ãããããŸãŒã³ãç°¡åã«å®è£ ã§ããŸãã
React DnDã䜿çšããŠãã補åã¯äœã§ããïŒ
codecks.ioã¯ãŸã éçºäžã§ãããæ©æã¢ã¯ã»ã¹ã«è¿ã
ã©ãããã圹ã«ç«ã¡ãŸããïŒ
ããããã ãã©ãŠã¶ã®åäœãæ£èŠåããdndãžã®åå¿ã¢ãããŒããæäŸããããšã§ããã®ã©ã€ãã©ãªã¯ç§ã«ãšã£ãŠç°¡åãªãã®ã«ãªããŸã
ã©ã®ãããã®é »åºŠã§åé¡ãçºçããã©ãã»ã©ã€ã©ã€ã©ããŸããïŒ
ããã¥ã¡ã³ãã¯çŽ æŽãããã§ãããããã䜿ãå§ãããšãããšã©ãŒã¡ãã»ãŒãžãªãã§ã¯æ©èœããªããšããé©ãã¹ãåé¡ã«ééããŸãããããã確å®ã«åçŸããããšã¯ã§ããŸããã§ããããããããé«ããŒãã®ãã©ãã°ã¿ãŒã²ããã«é¢ä¿ããŠããŸããã
ã©ã®æ©èœã«é¢å¿ããããŸããïŒ
ãã©ãŠã¶ã®æ£èŠåãã¿ããæäœã®ãµããŒã
補åã®ã¹ã¯ãªãŒã³ã·ã§ãããããã€ãæ·»ä»ã§ããŸããïŒ
ç§ã¯ãå»çšç»åã¢ãŒã«ã€ãã®æ€çŽ¢ãšã³ãžã³ã§ã®å士課çšã®ç 究ã§ReactDnDã䜿çšããŸããã ããã«ãããæ€çŽ¢çµæããã©ãã°ããŠã¯ãšãªã®äžéšã«ããããšãã§ããŸãïŒé¡äŒŒããç»åãçæãããŸãïŒã ãã®ãããªã©ã€ãã©ãªããªãã£ãããHTML5 APIãããã£ãŠãReactãšäžç·ã«ããŸãæ©èœããããšã確èªããå¿ èŠããããŸããã ãã£ãšéèŠãªããšã«éäžã§ããã®ã¯éã§ãïŒ
æ·±å»ãªåé¡ã¯ãããŸããã§ãããã0.xãã1.xãžã®ç§»è¡ã¯éåžžã«æ··ä¹±ããdistã¿ã°ãé©åã«äœ¿çšãããªãã£ãè¯ãäŸã§ãïŒ1.0.0-rcã¯æŽæ°ãããã«latest
ãšããŠãªãªãŒã¹ãããŸããïŒããã¥ã¡ã³ããŒã·ã§ã³ïŒã ãšã«ãããããã¯ãã¹ãŠæ©ã®äžã®æ°Žã§ãã :)
1.0.0-rcã¯ãæŽæ°ãããããã¥ã¡ã³ããªãã§ææ°ã®ãã®ãšããŠãªãªãŒã¹ãããŸãã
ãããããã¯ç§ãdist-tagsãã©ã®ããã«æ©èœããããåŠã¶åã§ããã ïŒåã³ïŒ
React DnDã䜿çšããŠãã補åã¯äœã§ããïŒ
ãã©ãã°ã¢ã³ãããããã®çžäºäœçšãå€ãã¯ã©ã€ã¢ã³ããããžã§ã¯ãã«äœ¿çšããŸãã 泚ç®ãã¹ãã³ã³ããŒãã³ãã®ããã€ãã¯æ¬¡ã®ãšããã§ãã
ããã¯ã³ã©ãã¬ãŒã·ã§ã³ããŒã«ã§ããããããã»ãšãã©ã®ã€ã³ã¿ãŒãã§ã€ã¹æŽæ°ã¯ãœã±ãããµãŒããŒã«ãã£ã¹ããããããŸãã
ã©ãããã圹ã«ç«ã¡ãŸããïŒ
éåžžã«äŸ¿å©ã§ãããã©ãã°ããžãã¯ãã³ã³ããŒãã³ãããåé¢ããŠåå¥ã«ãã¹ãããã®ã¯éåžžã«ç°¡åã§ãã
ã©ã®ãããã®é »åºŠã§åé¡ãçºçããã©ãã»ã©ã€ã©ã€ã©ããŸããïŒ
ãã¹ããšäžŠã¹æ¿ãããµããŒãããããªãŒãã¥ãŒã§å€ãã®åé¡ã«çŽé¢ããŠããŸãã
ç§ãã¡ãçµéšãã倧ããªåé¡ã®1ã€ã¯ããã¹ããšäžŠã¹æ¿ãããµããŒãããããªãŒãã¥ãŒã®å®è£ ã§ããã
ããŸããŸãªã¿ã€ãã®ããŒãïŒãã©ã«ããŒããªã¹ãïŒããããŸãã ãŠãŒã¶ãŒã¯ããã©ã«ããŒã«äœããããããããŠãã¹ãããããå¥ã®ããŒãã®äžãŸãã¯äžã«äžŠã¹æ¿ããããšãã§ããŸãã ãã®çžäºäœçšã«ã¯ãå€ãã®ã¡ãã€ãããã°ã®ããåäœãå Žåã«ãã£ãŠã¯ããã©ãŒãã³ã¹ã®äœäžã䌎ããŸãã ãã®ãããªãåç §ããŠãã ããïŒ http ïŒ//s.2to1.be/fAtXã
ãããæ©èœããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
çŸåšãããã€ãã®æ°åŠïŒãã®ãªããžããªã®ãœãŒãå¯èœãªäŸã®ããªãšãŒã·ã§ã³ïŒã䜿çšããŠãããŒãããã©ã«ããŒã®äžãŸãã¯äž/äžã«ãããã©ãããèšç®ããŸãã æåã¯Folder
ã³ã³ããŒãã³ããDropTarget
ã«ããããšããŸãããããããããŸããããªãã£ããããä»ã®Node
DropTarget
ã䞊ã¹æ¿ããããšãã§ããŸããã§ãã
ã©ã®æ©èœã«é¢å¿ããããŸããïŒ
- 劥åœæ§
- ããã¯ãšã³ãã®åãæ¿ã
- ã€ãã³ãã«å€¢äž
- ãã©ãŠã¶ã®ãµããŒã
補åã®ã¹ã¯ãªãŒã³ã·ã§ãããããã€ãæ·»ä»ã§ããŸããïŒ
äžã®ãããªãã芧ãã ãã
å é±ãïŒãŸã ãªãªãŒã¹ãããŠããªãïŒæè²çšWebã¢ããªã«react-dndãè¿œå ããŸããã ãããïŒ ããªãã®ä»äºãã©ããããããšãïŒ
IMOã®æ倧ã®ã¡ãªããã¯ãreact-dndããã¢ããªå šäœã§DnDæ©èœã管çããããã®é©åãªã¬ãã«ã®æœè±¡åãæäŸããããšã§ãã
å€ç«ãããããªãŒãµã€ãºã®ãã¹ãŠã®ãã©ãã°ã³ã³ããŒãã³ãïŒäžŠã¹æ¿ãå¯èœãªã©ïŒã®åä»ãªçµã¿åãããæšãŠãããšãã§ããããšã«å ããŠã以åã¯è€éããããšæžãçããŠãããã©ãã°ããŒã¹ã®æ©èœãæ°æéã§è¿œå ããããšãã§ããŸãã䟡å€ãããïŒããšãã°ãã«ãŒãããã©ãã°ããŠãªã¹ãå ã§åãœãŒããããããŠãŒã¶ãŒãªã¹ãã¢ã€ã³ã³ã«ãã©ãã°ããŠãŠãŒã¶ãŒãªã¹ãã衚瀺ããŠãããé©åãªãŠãŒã¶ãŒã«ããããããŸãïŒã
ãããŸã§ã«ééããå¯äžã®åé¡ã¯ã¿ããããã¯ãšã³ãã§ããããåã«é²ãããã«ãã°ããããã¯ããããšãã§ãã誰ããããäžè¬çãªãã«ãªã¯ãšã¹ãã«åãçµãã§ãããšã³ã¡ã³ãããŸããã
ãã§ã«çŽ æŽãããAPIãèãããšãç§ãæ°ã«ãããŠããäž»ãªæ©èœã¯ããã£ãããšããã¿ããã®ãµããŒãã§ãã
å人çã«èšãã°ããªãç§ã¯ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®ãã«ãªã¯ãšã¹ããè¡ããªãã®ã§ããïŒãšã«ããïŒ...ç§ã¯ãã¶ã€ããŒã§ãã ããšãã°ãç§ã¯ãã®ããŒã«ã䜿çšããŠããŸãããç§ã®é ã¯åœç¶ãéåžžã«ããŸããŸãªçš®é¡ã®åé¡ã«ã€ããŠèããŠããŸãã ãã®ãããªå³æžé€šã§çºçããåé¡ã解決ããã®ãåŸæã§ã¯ãªãããšã«å ããŠãããã¯å®éã«ã¯ç§ãéåžžè¡ãçš®é¡ã®äœæ¥ã§ã¯ãªããç§ã®è§£æ±ºçããä¿¡é ŒãããŸããã ããã«ã¯ããçšåºŠã®å©å·±å¿ãããããšã¯ç¥ã£ãŠããŸãããããã³ããšã³ãéçºã§ãã®ããã«è¡åãããã¶ã€ããŒãå°ãªããªãã®ã§ã¯ãªãããšæããŸãã ã¢ããªéçºã®è€éãã補åèšèšã®è€éãã«è¿ã¥ããŠãã¡ã€ã³éã移åããéã®äžå¿«æã軜æžããããŒã«ã䜿ã£ãŠãç§ã®ãããªãã¶ã€ããŒãåãã§æäŒã£ãŠãããããªãã®ãããªäººã ã«ãšãŠãæè¬ããŠããŸãã
åèãŸã§ã«ãã¬ã€ã¢ãŠãã®å€æŽãã¢ãã¡ãŒã·ã§ã³åããããã«ãreact-dndãreact-flip-moveãšçµã¿åãããŠäœ¿çšââããŠããŸãã ã»ãã®æ°æ¥ã§ããã圌ãã¯çŽ æŽããããã¢ãçµãã§ããããã§ãã
@arstin
ããã¯å®å šã«ç§ã®äžæ¥ãäœããŸããã ïŒå¿èïŒ
_React DnDã䜿çšããŠãã補åã¯äœã§ããïŒ_
補åã¯ãŸã èŠãé ãããŠããŸãã
_ã©ã®ããã圹ã«ç«ã¡ãŸããïŒ_
éåžžã«äŸ¿å©ã§ãããã©ãã°ã¢ã³ãããããã®çš®é¡ããããããããŸãã ã³ã³ããŒãã³ãå
ã«DnDããžãã¯ãä¿æããããšã¯ãç§ãã¡ã®è³ããã¹ãŠã®è€éãã管çããã®ã«åœ¹ç«ã¡ãŸããã
_ã©ã®ãããã®é »åºŠã§åé¡ãçºçããã©ãã»ã©ã€ã©ã€ã©ããŸããïŒ_
ç»é²ããããããã¿ãŒã²ããã®éãéåžžã«å€ããããããã©ãŒãã³ã¹ã«ããã€ãã®åé¡ããããŸãã ããã§ãªããã°ãããã¯ããŸããããŸãïŒ
_ã©ã®æ©èœã«é¢å¿ããããŸããïŒ_
ããã©ãŒãã³ã¹ãšSVGã®äºææ§ã
補åã®ã¹ã¯ãªãŒã³ã·ã§ãããããã€ãæ·»ä»ã§ããŸããïŒ
å®å
šã§ã¯ãããŸããããããã«ãããReact-DnDã§è§£æ±ºããããšããŠããåé¡ãããããŸãã
ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ãæŠç¥ã²ãŒã ã®ããããšãã£ã¿ã®ããã«æ©èœããŸãã ããã€ãã®ã«ãŒã«ã«åºã¥ããŠæ°ããã¢ã€ãã ããããã«ãã©ãã°ã¢ã³ããããããããããããå ã§ã¢ã€ãã ã移åãããããããšãã§ããŸãã ç§ãã¡ã¯ãªã³ã©ã€ã³ã²ãŒã ãæ§ç¯ããŠããŸããã代ããã«ãä»ã®ãããã³ã°ã®åé¡ã解決ããããã«ããã€ãã®ã¢ã€ãã¢ã䜿çšããŠããŸãïŒç¹°ãè¿ããŸãããç§ã¯ãŸã èšåããããšãã§ããŸããïŒã
çŽ æŽãããã©ã€ãã©ãªãããããšãããããŸããïŒ
ããã¯ãreactã䜿çšããŠããŠãdndãå®è¡ããå¿ èŠãããå Žåã«ãåœãæããã®ã§ãã ãããä»äºïŒ
ãã©ã³ã¹ããŒã管çãœãããŠã§ã¢ã§ReactDNDã䜿çšããŠããŸãã ãããŸã§ã®ãšããããŸã£ããåé¡ã¯ãããŸããã§ããã
ãŠãŒã¶ãŒã¯é éã¹ãããããã©ãã°ããŠãèšç®ãããè·é¢ã§å°å³äžã«çŽæ¥è¡šç€ºããŸãã
React DnDã䜿çšããŠãã補åã¯äœã§ããïŒ
ãã©ãã°ã¢ã³ãããããã®ãããã¯ããŒã¹ã®CMSïŒããã«å¥ã®å éšããŒã¿çã4æã«ã¯ã©ã€ã¢ã³ãåãã«ãªãªãŒã¹ïŒ
ã©ãããã圹ã«ç«ã¡ãŸããïŒ
éåžžã«ã APIã¯ãä»ã®ãµãŒãããŒãã£ã³ã³ããŒãã³ãã»ã©åçŽã§ã¯ãããŸããããéåžžã«åŒ·åã§ãå¿ èŠãªããšããã¹ãŠå®è¡ã§ããŸãã
ã©ã®ãããã®é »åºŠã§åé¡ãçºçããã©ãã»ã©ã€ã©ã€ã©ããŸããïŒ
ãŸãã«ãããã»ã©ã€ã©ã€ã©ããããšã¯ãããŸããã
ã©ã®æ©èœã«é¢å¿ããããŸããïŒ
å®å®æ§ãšã¯ãã¹ãã©ãŠã¶ã®é²åŒŸæ§ã
補åã®ã¹ã¯ãªãŒã³ã·ã§ãããããã€ãæ·»ä»ã§ããŸããïŒ
React DnDã䜿çšããŠãã補åã¯äœã§ããïŒ
ãã©ãã°ã¢ã³ãããããã䜿çšãããã¹ãŠã®å Žæã§ã AsanaWebã¢ããªã±ãŒã·ã§ã³ã§ReactDnDã䜿çšããŸãã çŸåšãã¢ããªã±ãŒã·ã§ã³ã瀟å ã®Lunaãã¬ãŒã ã¯ãŒã¯ããReactã«æžãçŽããŠããããã©ãã°ã¢ã³ãããããã䜿çšãããã¹ãŠã®å Žæã§ãæžãçŽãäžã«ReactDnDã䜿çšããŠããããšã«æ³šæããŠãã ããã
ã©ãããã圹ã«ç«ã¡ãŸããïŒ
éåžžã«äŸ¿å©ã§ãã APIã¯æäœãç°¡åã§ããã©ãã°ã¢ã³ããããããããã€ãã®ã³ã³ããŒãã³ãã«å«ããããšã§ãé¢å¿ã®åé¢ãæ確ã«ããããšãã§ããŸãã
ã©ã®ãããã®é »åºŠã§åé¡ãçºçããã©ãã»ã©ã€ã©ã€ã©ããŸããïŒ
æåã®ç«ã¡äžããé€ããŠãåé¡ãçºçããããšã¯ããŸããããŸããã ç§ãã¡ã¯TypeScriptã§ReactDnDã䜿çšããŠãããã¿ã€ãå®çŸ©ãæžãåºãããšã§ãïŒããã»ã¹ã§APIå šäœã調æ»ããå¿ èŠããã£ãããïŒç«ã¡äžãæéãççž®ããããšæããŸãã çŸåšãç§ãã¡ã®åé¡ã¯äžè¬çã«ãã¹ãã«é¢ãããã®ã§ãïŒããšãã°ããã¹ãéã®ã¯ãªãŒã³ã¢ãããdndã§è£ 食ãããã³ã³ããŒãã³ããæäœããããã®ç€Ÿå ãã«ããŒãªã©ïŒã ããã¯æã ã€ã©ã€ã©ããããšããããŸããã䜿çšããæ±çšã³ã³ããŒãã³ãããå°æ¥ã®ã³ã³ããŒãã³ãã®ããŒã¹ãšãªããµã³ãã«ã³ã³ããŒãã³ããããã®ã§ãããã»ã©ã§ã¯ãããŸããã
ã©ã®æ©èœã«é¢å¿ããããŸããïŒ
ããã©ãŒãã³ã¹ãé¢å¿ã®åé¢ããã¹ã容ææ§
補åã®ã¹ã¯ãªãŒã³ã·ã§ãããããã€ãæ·»ä»ã§ããŸããïŒ
@epelzãããããasanaã«ã¹ãã³ãµãŒãäŸé Œããå¿ èŠããããŸããããããªããšããããžã§ã¯ãã®é床ãäœäžããŸãã
defãreact-dndã䜿çšããTrelloãäœæããhttps://github.com/AsanaãŸãã¯https://github.com/FogCreekã¯ãåªããã¹ãã³ãµãŒã«ãªãå¯èœæ§ããããŸãã
@gaearonã¯ãFacebookãã¹ãã³ãµãŒã«ãªã£ãŠããæ¹ãããã§ã
React DnDã䜿çšããŠãã補åã¯äœã§ããïŒ
次äžä»£ã®UIã
ã©ãããã圹ã«ç«ã¡ãŸããïŒ
éåžžã«ïŒ ç§ã¯ããã¥ã¡ã³ãã奜ãã§ããããã£ãšçŸå®çãªäŸã䜿ãããšãã§ããŸãã
ã©ã®ãããã®é »åºŠã§åé¡ãçºçããã©ãã»ã©ã€ã©ã€ã©ããŸããïŒ
DragSourceã§ã³ã³ããŒãã³ããè£ é£Ÿãããšãã«ãå°éå ·ãå€æŽããããšãã«componentWillUpdateã¡ãœãããå®è¡ãããªããšããåé¡ãçºçããŸããã ãšãŠãã€ã©ã€ã©ããã®ã§ããã°ãå ±åããå¿ èŠããããšæããŸãã ã§ãããªãã§ã¯ãªãç§ã ãšæããŸãã ;ïŒ
ã©ã®æ©èœã«é¢å¿ããããŸããïŒ
ããã©ãŒãã³ã¹ãå®å®æ§ãã¿ãããµããŒãã
補åã®ã¹ã¯ãªãŒã³ã·ã§ãããããã€ãæ·»ä»ã§ããŸããïŒ
ãŸã æããŠããŸãããããªã¹ãã䞊ã¹æ¿ããããæ°ãããªã¹ããããªã¹ãã«ãã©ãã°ãããããŠãããšæããŸãã ããã«ããä»ã®äŸãšæ¯èŒãããšãéåžžã«åçŽã§ãã
React DnDã䜿çšããŠãã補åã¯äœã§ããïŒ
@teleportã§ã¯ãã¿ã¹ã¯ã®äžŠã¹æ¿ããšåé¡ã«Zen ïŒç§»åãã§ãã¯ãªã¹ãïŒè£œåã®ReactDnDã䜿çšããŠããŸãã
ãŸããçŸåšå éšã®ãããžã§ã¯ãã§äœ¿çšããããã«ãReactDnDã䜿çšããŠå®è£ ãããDnDãµããŒããåããåå©çšå¯èœãªããªãŒãã¥ãŒã³ã³ããŒãã³ãreact-dnd-treeviewãæ§ç¯ããŸããã æåã¯react-ui-treeã䜿çšããŸããããUXãæ£ããååŸã§ãããReact DnDã§ååããªçµéšãããã®ã§ãç¬èªã«å®è£ ããŸããã ã³ã³ããŒãã³ãã¯éåžžã«åæã®æ®µéã§ãããããããã¥ã¡ã³ããCIãªã©ã¯ãŸã ãããŸãããããã£ãŒãããã¯ããåŸ ã¡ããŠããŸãã
ã©ãããã圹ã«ç«ã¡ãŸããïŒ
ã¢ãã«ãç解ããã®ã«å°ãæéãããããŸãããããã¶ã€ã³ã¯æ¬åœã«ãããã§ãDnDãå¿ èŠãªãã¹ãŠã®å Žæã§äœ¿çšããããšã«ããŸããã ãšãŠã䟿å©ã§ãã
ã©ã®ãããã®é »åºŠã§åé¡ãçºçããã©ãã»ã©ã€ã©ã€ã©ããŸããïŒ
ãããŸã§ã«2ã€ã®åé¡ããããŸããã
ã©ã®æ©èœã«é¢å¿ããããŸããïŒ
ããã©ãŒãã³ã¹ãåºç€ãšãªããã©ãŠã¶/ãã©ãããã©ãŒã ã®çãé ããŸãã
補åã®ã¹ã¯ãªãŒã³ã·ã§ãããããã€ãæ·»ä»ã§ããŸããïŒ
React DnDã䜿çšããŠãã補åã¯äœã§ããïŒ
Discord- https: //discordapp.com-ã²ãŒããŒåãã®é³å£°ããã³ããã¹ããã£ãã
ã©ãããã圹ã«ç«ã¡ãŸããïŒ
ãšãŠãïŒ
ã©ã®ãããã®é »åºŠã§åé¡ãçºçããã©ãã»ã©ã€ã©ã€ã©ããŸããïŒ
ãŸãã«ã5/10ã€ã©ã€ã©ããŸãã
ã©ã®æ©èœã«é¢å¿ããããŸããïŒ
çŸåšã®ãã¹ãŠã®æ©èœã
Slackãã¹ã¯ãããã¯ã©ã€ã¢ã³ãã«ã¯ã»ãšãã©react-dndã䜿çšããŠããŸããããæ®å¿µãªãã2ã€ã®å¶éãããããããååŒã劚ãããã®ã§ããããšãå€æããŸããã
hover
ã§äœããããŠããå Žåãã«ã¹ã¿ã ãã©ãã°ã¬ã€ã€ãŒã䜿çšãããšãéåžžã®Reactã¬ã³ããªã³ã°ã«ãŒãããããã¯ãããŸãã ã«ã¹ã¿ã ãã©ãã°ã¬ã€ã€ãŒãå¿
èŠãªå Žåã¯è¿œå ã®Reactã³ã³ããŒãã³ããäœæããå¿
èŠãããããã®ãã©ãã°ã¬ã€ã€ãŒã¯ãdndã¢ãã¿ãŒããã®props
ã®å€æŽã«å¿ããŠãã®äœçœ®ãå€æŽããããšã§æ©èœããããã render()
ã¯æçµçã«æ¬¡ã®ããã«ãªããŸãã _ãããã_ãšåŒã°ããŸãã ããã¯ãDragSourceããã©ãã°ãããšãã«ã hover
ã§ä»ã®ã³ã³ããŒãã³ãïŒã»ãšãã©ã®å Žåãä»ã®ããããã¿ãŒã²ããïŒãåã¬ã³ããªã³ã°ããããšãèšç»ããŠããå Žåã«ã®ã¿åé¡ã«ãªããŸãã hover
ã®ç¶æ
ãéåæã§å€æŽããããããã¿ãŒã²ãããå€æŽãããŠããªãå Žåã¯ãããŒã®æ©ã段éã§æ»ãããšã§ãããããããã軜æžã§ããŸãããããããŒäžã«ããããã¿ãŒã²ãããå€æŽãããšãäŸç¶ãšããŠé¡èãªã©ã°ããããŸãããããŸãããã°ããã®ãã£ãŒãããã¯ãã圹ã«ç«ãŠã°å¹žãã§ãã Slackã¢ããªã§ã®äœ¿çšãæ€èšããŠããéãreact-dndã§ã®äœæ¥ã楜ããã§ããŸãããå¯èœãªéãããããã®å¶éãå æã§ããããšãæãã§ããŸãã
React DnDã䜿çšããŠãã補åã¯äœã§ããïŒ
WebããŒãžãäœæããæ°ããæ¹æ³ã§ããtylioã§äœ¿çšããŸãã React-dndã¯ãã³ã³ãã³ããã¢ããããŒãããããŒãžã®åé¢ãšäžå€®ã«ãããŸãã
ã©ãããã圹ã«ç«ã¡ãŸããïŒ
éåžžã«äŸ¿å©; ãã¹ãŠã®å¯åéšåãäžåºŠã«ç解ããå¿ èŠããããããæåã¯é ãå ãã®ã¯å°ãé£ããã§ãããã«ãããšé³ãããããã«ãªã£ãããæºåã¯å®äºã§ãã
ã©ã®ãããã®é »åºŠã§åé¡ãçºçããã©ãã»ã©ã€ã©ã€ã©ããŸããïŒ
ããŸããŸãªãµã€ãºã®ã¢ã€ãã ã䞊ã¹æ¿ããŠç§»åããŠãããããã±ãŒã¹ã¯éåžžã«è€éã§ãããããªããããããã䜿çšããããããŸããã ããã€ãåé¡ããããŸããããã©ã€ãã©ãªèªäœããã䜿ãæ¹ã®æ¹ãå€ãã£ããšæããŸãã
ã©ã®æ©èœã«é¢å¿ããããŸããïŒ
ãããã®ã»ãšãã©ãã¹ãŠïŒ ããŸããŸãªã¿ã€ãã®ãã©ãã°ãœãŒã¹ãšããããã¿ãŒã²ããããã€ãã£ããã¡ã€ã«/ URL /ããã¹ããHTML5ãããã³ã«ã¹ã¿ã ãã©ãã°ã¬ã€ã€ãŒãåããã¿ããããã¯ãšã³ãã䜿çšããŸãã
補åã®ã¹ã¯ãªãŒã³ã·ã§ãããããã€ãæ·»ä»ã§ããŸããïŒ
誰ããTypescriptã§ããã䜿çšããå Žåãåºæ¬çãªäŸãæäŸã§ããŸããïŒ ç§ã¯ãã®ãšã©ãŒã§ç«ã¡åŸçããŸããïŒ
decorateHandler.js:13 Uncaught TypeError: Cannot call a class as a function
ç§ã¯ããã次ã®ããã«äœ¿çšããŸãïŒ
@DragSource(ItemTypes.IDEA,ideaSource,(connect:DragSourceConnector, monitor:
DragSourceMonitor)=>{
return {
connectDragSource:connect.dragSource(),
isDragging:monitor.isDragging()
};
})(Idea)
export class Idea extends React.Component<IIdeaProps,{}>{...}
ãã£ã€ã ã鳎ããã«ã¯é ããããã©ããã¯ããããŸããããïŒã§ããã°å»ºèšçãªïŒãã£ãŒãããã¯ãæäŸããããšæããŸããã
React-DnDãææ¡ïŒããã³å®è£ ïŒããã®ã¯ããé£ããããšãããããŸããã ããã¯å€ãã®å¯åéšåãæã£ãŠãããã»ããã¢ããã¯ããªãè€éã§ãã ãã£ãšããã©ã°ã¢ã³ããã¬ã€ããªãã®ã欲ãããšæã£ãŠããŸããã ãããŠãããããããã¯ãããŸããŸãªããšïŒã¿ãŒã²ããã®ãã©ãã°/ããããããªã¹ãã®äžŠã¹æ¿ããªã©ïŒãè©Šã¿ãŠããããã§ãã ããããç§ã¯å¥ã®ã¢ãããŒãããšãããšã«ãªããŸãããåºæ¬çã«ã¯ãåã¢ã€ãã ã«äžäžãã¿ã³ãé 眮ãããã®ããã«äžŠã¹æ¿ããã ãã§ã react-flip-moveãçµã¿åãããŠåããã¢ãã¡ãŒã·ã§ã³åããŸããã
ãªã¹ãã®äžŠã¹æ¿ãã®ã¿ã«çŠç¹ãåœãŠããããæ©èœãããããã«_è¶ _ã·ã³ãã«ã«ä¿ã€ãã®ãã©ãŒã¯ãèŠãããšæããŸãã
ReactãšReduxã䜿çšããŠæ§ç¯ããã倧èŠæš¡ãªãããã©ã€ãšã¿ãªè£œåã§äœ¿çšãå§ããŠããŸãã react-dndã䜿çšããŠãã¢ããªå ã®SVGèŠçŽ ãé€ããã¹ãŠã®ãã®ã®ãã©ãã°ã¢ã³ãããããã®åŽé¢ã管çããŸãã ã¡ããã©ããæœè±¡åã¬ã€ã€ãŒããããŸãã å®éãReactããåã®ã³ãŒãã«ã€ããŠã¯ã瀟å ã«éåžžã«ãã䌌ããã®ããããããŠã¹ã€ãã³ãã«ãã£ãŠãµããŒããããŠããŸãã
ç§ãreact-dndã«æãã§ããããšã®1ã€ã¯ãããŠã¹ã€ãã³ãã«åºã¥ãããã¯ãšã³ãã§ãããSVGèŠçŽ ã§ãæ©èœããŸãã
ãšããã§ã flow-typedã®æ¢åã®å®çŸ©ãäžå®å šã§ãããããTypeScriptå®çŸ©ã«åºã¥ããŠãããŒã¿ã€ãå®çŸ©ãäœæäžã§ãã
ãããŒãããããã®å ¥åïŒ ããã¯ééããããŒã¿ããããããããŸãïŒ ãã®åé¡ã解決ããŸãã ã³ã¡ã³ããæçš¿ããŠãã ãã£ãçæ§ãããããšãããããŸããïŒ
ä»åŸæ°é±éã§ããã€ãã®ããã¥ã¡ã³ããæŽæ°ããäºå®ã§ããç§ã®èãã®1ã€ã¯ãReactDNDã䜿çšããŠãããžã§ã¯ããšã¢ããªã±ãŒã·ã§ã³ã®ã·ã§ãŒã±ãŒã¹ãäœæããããšã§ãã ãããžã§ã¯ãã«åãæãããšãã«ããããã®ãããžã§ã¯ãããã£ããã£ããããã®ãã©ããŒã¢ããåé¡ãäœæããŸãã
ð
@mnquintanaéåžžã«èå³æ·±ããã£ãŒãããã¯-ããªããšããŒã ã¯ãå¥ã®ãã©ãã°ã¢ã³ãããããã©ã€ãã©ãªã䜿çšããããšã«ãªããŸãããããããšãå®å šã«ãŒãããäœããæ§ç¯ããããšã«ãªããŸãããïŒ
@mnquintanaã¯ããããå æããããã«ããªããäœãããããåŠã¶ã®ã«æ¬åœã«çŽ æŽãããã§ãããããããã¯ãã£ãšè¯ãããšã«ãslackã«åœŒãã®dndã©ã€ãã©ãªããªãªãŒã¹ãããŠãã ããïŒ
@epelzããªãã®å©ããå¿ èŠã§ãã åå©çšå¯èœãªãã©ãã°ã¢ã³ãããããã³ã³ããŒãã³ããäœæããŠãããã·ã¥ããŒãã®ã«ãŒããšãªã¹ãå ã®ã¢ã€ãã ããã©ãã°ããããã«ãŒããšãªã¹ãã«å¥ã ã®ã³ã³ããŒãã³ãã䜿çšããŸãããã è¿ä¿¡ããŠããã ããã°å¹žãã§ãã
ããã¯ããªãå€ããã£ã¹ã«ãã·ã§ã³ã¹ã¬ããã§ããããšã¯ç¥ã£ãŠããŸããããšã«ããè²¢ç®ããããšæããŸããã Evernote
ðçŸåšãããžãã¹åãã®æ°ããSpaces補åã«react-dndã䜿çšããŠããŸãïŒ ç§ãã¡ã¯ããããã®ããšãåŠã³ãŸããã人ã
ãèå³ãæã£ãŠãããªããç§ãã¡ãåŠãã ããšãå
±æããããšãããããããŸãã:)
React DnDã䜿çšããŠãã補åã¯äœã§ããïŒ
https://evernote.com/business
ã©ãããã圹ã«ç«ã¡ãŸããïŒ
éåžžã«äŸ¿å©ïŒ ããã¯æ¥ãªåŠç¿æ²ç·ã§ããããç§ãã¡ãããããããšã®ã»ãšãã©ãå®è¡ããããšãã§ããŸããã
ã©ã®ãããã®é »åºŠã§åé¡ãçºçããã©ãã»ã©ã€ã©ã€ã©ããŸããïŒ
åå¿è
ã«ã¯å€§ããªéå£ããããæ±ãããããã®ããããšæããŸãã ãããŒãšããããã®å¹æã«é¢ããããã€ãã®ãã°ã¯ç§ãã¡ãããªãæ··ä¹±ãããŸããããããã詳ãã調ã¹ãŠã¿ããšããããã®ããã€ãã¯HTML5ã®ãã©ãã°ã¢ã³ãããããã®ãã€ãã£ãå®è£
ã®å¶éã«ãããªãããã§ãïŒããããå¹æã¯ç¹ã«é©çšãããã«ãŒãœã«ããªãŒããŒã©ã€ãããããã§ãã®ã§ã cursor: no-drop
ã®ãããªãã®ãå©çšããŸããå¿
èŠã«å¿ããŠç¬èªã®ããã¯ãšã³ããå®è£
ã§ããããã«äœæããã®ã¯æ¬åœã«è³¢ãæ¹æ³ã§ãããã¿ããããã¯ãšã³ãã®å®éšã«ã¯ãŸã ææŠããŠããŸããã
ããŒããã·ã§ã³ã«ããã¯ããã®ã¯èå³æ·±ãæéã§ããã ã¡ã¢ã®ãã©ãã°ã¢ã³ãããããã§ã¯ãäœãã移åããã³/ãŸãã¯ããããã§ãããã©ãããç¥ãããã«å€ãã®ããšãå¿ èŠã§ãã ãŸããCustomDragLayerã«èªåèªèº«ãããããããå ŽæãèŠã€ãããªãã£ãå Žåã¯ããã€ãã£ãã®ãã§ãŒãã¢ãŠããã©ãã°ããã¯ãã¡ã€ã³ã®DOMèŠçŽ ã«åå®ââè£ ããå¿ èŠãããããšãããããŸããïŒããã¯ç§ãã¡ãè²¢ç®ã§ããäŸãããããŸããïŒã
ã©ã®æ©èœã«é¢å¿ããããŸããïŒ
ç§ãã¡ã¯è€æ°ã®ãã©ãã°ã¢ã³ããããããå®è£
ããããšããŠããŸãããç§ãã¡ãç¥ã£ãŠããããšãããReact-Dndã§ãããè¡ãããã®ã¯ãªãŒã³ãªæ¹æ³ãããããã«ã¯èŠããŸãããïŒ ããããç§ãã¡ã¯ããã«ã€ããŠãã£ãšèª¿ã¹ãŠããŸãã æ·±ãæãäžãããšãããå€ãã®æ
å ±ãå
±æããŸãã
@augbogãè©Šãããã©ããã¯ããããŸãããã第14å·ã®æåã®æçš¿ã§ãã«ã¹ã¿ã ãã©ãã°ã¬ã€ã€ãŒã䜿çšããŠgaeronã®å®è£ ã調ã¹ãŸãããïŒ
ããæå³ã§ããã®ã·ããªãªã¯ãã§ã«å¯èœã§ããæ¶è²»è ã¯ãéžæããèŠçŽ ãæåã§è¿œè·¡ããdragPreviewãããçš®ã®äžè¬çãªãã¬ãŒã¹ãã«ããŒImageã«èšå®ããïŒããžãã¹ããžãã¯ã«é¢ããéãïŒããã€ãã®èŠçŽ ã®åé€ã«é©åã«å¯Ÿå¿ã§ããŸãã
https://react-dnd.github.io/react-dnd/examples-drag-around-custom-drag-layer.html
ããããšã@JM-ã¡ã³ãã¹ãããç§ãã¡ã¯ãããèŠãŠãè€æ°ã®ã³ã³ããŒãã³ãããã©ãã°ãããŠããããšãèªèããŠããããšã«é¢ãããã©ããŒã¢ããã³ã¡ã³ãã«ã€ããŠå¿é ããŠããŸãããããããèªã¿çŽããåŸãå®éã«ã¯åœ±é¿ããªãå¯èœæ§ãããããããŸã 調æ»äžã§ã:)ããããšããã®åŒã³ããã®ããã«ïŒ
ã¯ãã¹iframeDnDãŸãã¯èŠªãŠã£ã³ããŠããåiframeãžã®ãã©ãã°å¯èœæ§ã®ããã¯ãšã³ãã¯ãŸã ãããŸããã @gaearonããã€ãã®ã¹ã¬ããã§ãã®åé¡ã«é¢ããããªãã®ã³ã¡ã³ããèŠãŸãããããããç§ã®ãããžã§ã¯ãã«çŽç²ãªjsãœãªã¥ãŒã·ã§ã³ã䜿çšããªããã°ãªããªãã£ãå¯äžã®çç±ã§ãããšèšãããã§ãã
ïŒç·šéïŒããã¯ããã©ãã°ã¢ã³ãããããããŒãžãã«ããŒãæ§ç¯ããããšããŠãã人ã«ãšã£ãŠæ¬åœã«äŸ¿å©ãªæ©èœã ãšæããŸãã
æãåèã«ãªãã³ã¡ã³ã
ãã©ãã°ã¢ã³ãããããã䜿çšãããã¹ãŠã®å Žæã§ã AsanaWebã¢ããªã±ãŒã·ã§ã³ã§ReactDnDã䜿çšããŸãã çŸåšãã¢ããªã±ãŒã·ã§ã³ã瀟å ã®Lunaãã¬ãŒã ã¯ãŒã¯ããReactã«æžãçŽããŠããããã©ãã°ã¢ã³ãããããã䜿çšãããã¹ãŠã®å Žæã§ãæžãçŽãäžã«ReactDnDã䜿çšããŠããããšã«æ³šæããŠãã ããã
éåžžã«äŸ¿å©ã§ãã APIã¯æäœãç°¡åã§ããã©ãã°ã¢ã³ããããããããã€ãã®ã³ã³ããŒãã³ãã«å«ããããšã§ãé¢å¿ã®åé¢ãæ確ã«ããããšãã§ããŸãã
æåã®ç«ã¡äžããé€ããŠãåé¡ãçºçããããšã¯ããŸããããŸããã ç§ãã¡ã¯TypeScriptã§ReactDnDã䜿çšããŠãããã¿ã€ãå®çŸ©ãæžãåºãããšã§ãïŒããã»ã¹ã§APIå šäœã調æ»ããå¿ èŠããã£ãããïŒç«ã¡äžãæéãççž®ããããšæããŸãã çŸåšãç§ãã¡ã®åé¡ã¯äžè¬çã«ãã¹ãã«é¢ãããã®ã§ãïŒããšãã°ããã¹ãéã®ã¯ãªãŒã³ã¢ãããdndã§è£ 食ãããã³ã³ããŒãã³ããæäœããããã®ç€Ÿå ãã«ããŒãªã©ïŒã ããã¯æã ã€ã©ã€ã©ããããšããããŸããã䜿çšããæ±çšã³ã³ããŒãã³ãããå°æ¥ã®ã³ã³ããŒãã³ãã®ããŒã¹ãšãªããµã³ãã«ã³ã³ããŒãã³ããããã®ã§ãããã»ã©ã§ã¯ãããŸããã
ããã©ãŒãã³ã¹ãé¢å¿ã®åé¢ããã¹ã容ææ§