κΈ°λ³Έ λλκ·Έ μ€ λλ‘μΌλ‘ ꡬννκΈ° μ΄λ €μ΄ μΌλ°μ μΈ ν¨ν΄μ΄ μμ΅λλ€. μ¬λ¬ μμλ₯Ό λλκ·Ένλ κ²μ λλ€. μ ν λ©μ»€λμ¦μ μ±λ§λ€ λ€λ₯Ό μ μμ§λ§(cmd+ν΄λ¦, 체ν¬λ°μ€, μ¬μ μ μλ κ·Έλ£Ή), μ μ΄λ μ΄ μλ리μ€λ₯Ό μ§μνλλ‘ _κ°λ₯_νκ² λ§λλ κ²μ΄ μ’μ΅λλ€.
μ¬λ¬ κ°μ λλκ·Έ νλͺ©μ΄ DOMμμ νμ κ° μλ μ μκ³ setDragImage(element, x, y)
κ° κ±°μ λ―Έμ³€κ³ λ λμμ§μ§ μμκΈ° λλ¬Έμ λλκ·Έ 미리보기μμ ν λ²μ μ¬λ¬ μμλ₯Ό λ λλ§νλ λ° λΆλ΄μ κ°μ§ μμ κ²μ
λλ€.
"λ€μ€" λλκ·Έ 미리보기λ₯Ό νμν μ μλ κ²½μ° μ΄ μλ리μ€λ₯Ό ꡬννλ λ° μ΄λ»κ² λμμ μ€ μ μμ΅λκΉ?
μ΄λ€ λ©΄μμ μ΄ μλ리μ€λ μ΄λ―Έ κ°λ₯ν©λλ€. μλΉμλ μ νν μμλ₯Ό μλμΌλ‘ μΆμ νκ³ dragPreview
λ₯Ό μΌμ’
μ μΌλ° μ리 νμμ Image
λ‘ μ€μ νκ³ μμ μ μ μ νκ² λμν μ μμ΅λλ€. λ
Όλ¦¬ κ΄λ ¨) μ¬λ¬ μμ.
κ·Έλ¬λ νμ¬ ν μμκ° λλκ·Έλλ κ·Έλ£Ήμ μΌλΆλΌλ κ²μ μ μ μλ λ°©λ²μ΄ μ§μλμ§ μμ΅λλ€. react-dndμ κ΄μ μμ μ°λ¦¬κ° 무μΈκ°λ₯Ό λλκ·Ένλ©΄ μ΄ μ»΄ν¬λνΈλ getDragState(type).isDragging = true
λ₯Ό μ»μ§λ§ λ€λ₯Έ μ»΄ν¬λνΈλ κ·Έλ μ§ μμ΅λλ€. μ± κ΄μ μμ λ€μ€ μ νμ μ§μνλ κ²½μ° λ
Όλ¦¬μ μΌλ‘ "μ νλ" λͺ¨λ νλͺ©μ΄ λλκ·Έλκ³ μμμ μΈμνκΈ°λ₯Ό μν©λλ€. μ¬μ§μ΄ κ·Έ μ€ νλλ§ μ€μ λ‘ "DOMμΌλ‘ λλκ·Έ"λλ κ²½μ°μλ λ§μ°¬κ°μ§μ
λλ€.
μ°λ¦¬μκ² νμν κ²μ κ΅¬μ± μμκ° react-dndμ "μ΄λ΄, onDragStart
κ° λ€λ₯Έ κ΅¬μ± μμμ μν΄ μμ λμμ§λ§ λλ λλ €κ°κ³ μλ μ²νκ³ λ΄ getDragState(type)
λ―Έλ¬λ κ΅¬μ± μμμ getDragState(type)
λλκ·Ένκ³ λ΄ endDrag(didDrop)
νΈμΆνλλ‘ νμ¬ λ΄ μμ
μ μνν μ μμ΅λλ€."
κ΅¬μ± μμλ μ΄λ»κ² μ νν©λκΉ?
μ°μ μμκ° μλλλ€. λλκ·Έ μμ€ ν€λ₯Ό λμ ν ν μ¬λ°©λ¬Έν μ μμ΅λλ€(https://github.com/gaearon/react-dnd/issues/38#issuecomment-73409935).
λλ λΉμ μ΄ dragSourceκ°μλ κ΅¬μ± μμλ‘ κ΅¬μ± μμ νΈλ¦¬μ μΉμ
μ λν ν μ μλ€κ³ μκ°νμ§λ§ μμΌλ‘ μ΄κ²μ κ΄μ¬μ κ°μ§ κ²μ
λλ€ ...
Shift ν€λ₯Ό λλ₯Έ μνμμ ν΄λ¦νλ©΄ λ°°μ΄μ μ΄λ€ μΉμ
μ΄ dragItem λ±μ 볡μ¬λλμ§ νμ₯λ©λλ€.
μ’.
λ¨Όμ null component
(#38μ νμ)μ λμΌν key
(#53μ νμ)λ₯Ό κ°μ§ λ€λ₯Έ κ΅¬μ± μμλ₯Ό μ λ¬νλ λ°©λ²μ λ°°μλλ€.
κ·Έλ° λ€μ μ ν μ¬νμΈ groupKey
λ₯Ό μΆκ°ν©λλ€. key
μ κ°μ΄ λλκ·Έ μμ€μ μ§μ λλ©° λ¬Έμμ΄μ
λλ€. groupKey
μ¬μ©νμ¬ λ¬΄μΈκ°λ₯Ό λλκ·ΈνκΈ° μμνλ©΄ νΈμΆμλΏλ§ μλλΌ λμΌν groupKey
μ¬μ©νμ¬ λ§μ΄νΈλ λͺ¨λ λλκ·Έ μμ€μμ beginDrag
νΈμΆνκ³ νλͺ©μ λ€μμΌλ‘ μμ§ν©λλ€. λ°°μ΄. item
λμ μ΄λ¬ν νλͺ©μ μ λ¬νμ¬ λμ λ©μλλ₯Ό μμ ν©λλ€. λλκ·Έκ° λλλ©΄ νλͺ© λ°°μ΄μ μ¬μ©νμ¬ λλ‘ λμμμ acceptDrop
λ₯Ό νΈμΆν λ€μ ν΄λΉ νλͺ©κ³Ό ν¨κ» κ° λλκ·Έ μμ€μ endDrag
λ₯Ό νΈμΆν©λλ€.
μ¬λ―Έμλ μ μ μ°λ¦¬κ° items.length
μ μΉ΄μ΄νΈλ₯Ό μκ³ μκΈ° λλ¬Έμ μ¬μ©μ μ μ "볡ν©" μΈλ€μΌ κ΅¬μ± μμμ μμμ μ€ν¬λ¦°μ·κ³Ό κ°μ μΉ΄μ΄ν°λ₯Ό μ¬μ©νμ¬ DragLayer
λ₯Ό 그릴 μ μλ€λ κ²μ
λλ€.
λ΄κ° μκ°νλ κ²λ³΄λ€ ν¨μ¬ λ μΆν μκ°μ΄μΌ
:+1: μ΄ κΈ°λ₯μ μν΄ :-)
λ«μ΅λλ€. νμ¬ μ΄μ λν μ¬μ© μ¬λ‘κ° μμΌλ©° μλΉν ꡬν λ Έλ ₯μ΄ νμν©λλ€.
@gaearon
μ λ μμ μ Java/Swing DnDλ₯Ό μ¬μ©νκ³ , μλ§ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκ³ λ§€μ° μΈλ ¨λκ³ λ§€μ° μΌλ°μ μ΄λ©° μ μ°ν νλ μμν¬λ₯Ό κ³ μν κ°λ°μ κ΅°λκ° μμμ κ²μ λλ€. λλ μ€λλ λ°μ€ν¬ν νλ μμν¬κ° μ΄μ κ°μ μ’μ DnD νλ μμν¬λ₯Ό λ§λλ λ° μμ΄ λͺ¨λ μ΄λ €μ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ κ²μ΄λ―λ‘ μ°κ΅¬νλ κ²μ΄ μ’μ΅λλ€.
Java/Swingμμ μ΄ μμ
μ μννλ λ°©λ²μ(λλκ·Έ μ΄λ―Έμ§μ λν λ΄μ₯ μ§μμ΄ μμμμλ λΆκ΅¬νκ³ ) _νΈλ¦¬ λ·° μ체λ₯Ό λλκ·Έ μμ€λ‘ λ§λ€κ³ _μ΄λ₯Ό κΈ°λ°μΌλ‘ λλκ·Έλ₯Ό μμν΄μΌ νλμ§ μ¬λΆλ₯Ό κ²°μ ν μ μκ² νλ κ²μ
λλ€. νμ¬ μν λ° λλκ·Έ μμ μμΉ_. canDrag
λ° beginDrag
νΈμΆ μ monitor.getInitialSourceClientOffset()
μ¬μ©ν μ μμ΅λκΉ? μ¬λλ€μ λΆλͺ
ν κ·Έκ²μ μ¬μ©ν μ μκΈ°λ₯Ό μν κ²μ
λλ€. κ·Έλ€μ λν μμ μ ν€(ctrl, alt, shift)λ₯Ό μ¬μ©ν μ μκ³ λλκ·Έ μμ€μμ μ΄λ λλ λ³΅μ¬ μ¬λΆλ₯Ό μ§μ νκ³ λμμ λκΈ°λ₯Ό μν κ²μ
λλ€. μ΄λ¬ν μμλ Java/Swingμμ κ°λ₯νκ³ λ€λ₯Έ νλ μμν¬λ₯Ό μΆμΈ‘νκ³ μκΈ° λλ¬Έμ
λλ€. Swingμλ κ΅μ²΄ν μ μλ _λλκ·Έ μ μ€μ² μΈμκΈ°_ κ°λ
λ μμμ΅λλ€.
λͺ©λ‘μ λͺ¨λ νλͺ©μ κ°λ³ λλκ·Έ κ°λ₯μΌλ‘ μ²λ¦¬νλ κ²μ λͺ©λ‘ κ΅¬μ± μμκ° μ νν νλͺ©μ λ°λΌ ꡬμ±ν λλ‘ νμ΄λ‘λ/미리 보기 μ΄λ―Έμ§μ μ’ λ₯λ₯Ό νμ νλ λ¨μΌ λλκ·Έ μμ€κ° λλ κ²κ³Ό λΉκ΅ν λ μ΄λ €μΈ κ²μ΄λΌκ³ μμΈ‘ν©λλ€.
λν κ°λ°μκ° _μ¬μ©μκ° ν΄λ¦νκ³ λμ΄μ¨ νλͺ©μ κΈ°μ€μΌλ‘ λλκ·Έλλ νλͺ©μ μμλ₯Ό λ³κ²½νκΈ°λ₯Ό μν μλ μλ€λ μ μ κ³ λ €νμμμ€._ μ λ Windows νμκΈ°κ° μ΄λ¬ν λ°©μμΌλ‘ μλνλ€κ³ μκ°ν©λλ€.
μμ© νλ‘κ·Έλ¨μμ react-dndλ₯Ό μ¬μ©νμ¬ μ¬λ¬ νλͺ© λκΈ°λ₯Ό ꡬνν μ¬λμ΄ μμ΅λκΉ? μ΄μ λν νμ¬ μ루μ μ 무μμ λκΉ?
λ¨μΌ λλκ·Έ μμ€μ λν΄ μ¬λ¬ λλ‘ λμμ μλ―Ένμ΅λκΉ?
+1 @danii1 : μ¬λ¬ νλͺ©μ λλκ·Ένλ κΈ°λ₯μ ꡬνν μ¬λμ΄ μμ΅λκΉ?
λλ κ·Έκ²μ ꡬννκ³ μ루μ μ κΈ°λ³Έμ μΌλ‘ 첫 λ²μ§Έ κ²μλ¬Όμ μ€λͺ λμ΄ μμ΅λλ€.
λλ κ·Έκ²μ λ€μκ³Ό κ°μ΄ ꡬννλ€.
λλ μ΄κ²μ λν΄ μ½κ° λ€λ₯Έ μ¬μ© μ¬λ‘κ° μλ€κ³ μκ°ν©λλ€. λλκ·Έν μ μλ κ°μ₯μλ¦¬λ‘ λλκ·Έν μ μλ λ
Έλλ₯Ό κ·Έλ¦¬κ³ μΆμ§λ§ λ
Έλκ° μ΄λνκΈ° μν΄ μ°κ²°λ λ μ΄λνλ λ
Έλλ₯Ό κ·Έλ¦¬κ³ μΆμ΅λλ€. λ΄ νμ¬ κ΅¬νμ DraggableNode
κ° μμ§μ΄λ κ²μ κ°μ§ν λ κ°μ₯μ리λ₯Ό 그리λ CustomDragLayer
μ
λλ€( CustomDragLayer
μλ κ·Έλ €μ§μ§λ§ λͺ¨λ κ°μ₯μ리λ₯Ό isDragging()
ꡬννμ¬ λͺ¨λ κ°μ₯μ리λ₯Ό DragSourcesλ‘ κ΅¬ννμ¬ μ°κ²°λ λ
Έλκ° μμ§μ΄λμ§ κ°μ§νμ¬ CustomDragLayer
κ° μ’νλ₯Ό μνμΌλ‘ μ½μ
νλ λμ μ€μ€λ‘ 그릴 μ μλλ‘ νμ¬ λ€μ€ λλκ·Έ μν© .
@danii1
μ°Έμ‘°μ©μΌλ‘ ꡬνν κ²μ 곡μ ν΄ μ£Όμ€ μ μμ΅λκΉ?
λλ κ²μλ¬Όμ μμ±νκ³ react-dnd + reduxλ₯Ό μ¬μ©νμ¬ λ€μ€ λ° μ€μ²© λλκ·Έ μ€ λλ‘μ λν 리ν¬μ§ν 리λ₯Ό μΆκ°ν κ²μ λλ€.
@nayemmajhar , κ·Έκ²μ μ’μ κ²μ λλ€
@nayemmajhar μ΄κ²μ λν μμ λν μ λ°μ΄νΈκ° μμ΅λκΉ?
μ λ μ€λμ μ reduxJSμ ν¨κ» react DnDλ₯Ό μ¬μ©νμ¬ μ΄ μ ν리μΌμ΄μ μ κ°λ°νμ΅λλ€. https://www.joomshaper.com/page-builder νν 리μΌμ μμ± μ€μ΄μ§λ§ κ²μν μκ°μ΄ νμν©λλ€
@serle μ΄ μμ μ μνν λ°©λ²μ λν μ½λ μμ λ₯Ό 곡μ ν μ μμ΅λκΉ?
@ianmclean2011 μ¬κΈ°μμ νμΈνμΈμ: https://github.com/react-dnd/react-dnd/issues/590
https://react-dnd.github.io/react-dnd/examples-sortable-simple.html μ μ λ ¬ κ°λ₯ν μμ μ μ μ¬ν μμ μμ λ€μ€ λλκ·Έλ₯Ό ꡬννλ €κ³ ν©λλ€
κ΄μ¬ μλ μ¬λμ΄ μμΌλ©΄ λ€μ€ λλκ·Έ/그리λ 보기λ₯Ό ꡬννμ΅λλ€: https://codesandbox.io/s/9j897k0mwy.
cmd/ctrl λ° Shift ν€λ₯Ό μ¬μ©νμ¬ μ¬λ¬ νλͺ©μ μ νν λ€μ 그리λ μ£Όμλ‘ λλκ·Ένμ¬ μ무 κ³³μλ μ½μ
ν μ μμ΅λλ€.
μ΄κ²μ μ¬μ ν ββλ°λͺ¨μ΄μ§λ§ μ½λλ₯Ό μ‘°κΈ λ μΆμννκ³ λμ€μ κ΅¬μ± μμμ ν¨ν€μ§ν μ μμ΅λλ€.
@melvynhills μ νν λͺ¨λ μΉ΄λλ₯Ό κ° μΉ΄λ κ΅¬μ± μμμ μ λ¬ν νμκ° μλ μ루μ μ μ‘°μ¬ν μ μ΄ μμ΅λκΉ? μΉ΄λμ beginDrag()κ° μ νν λͺ¨λ μΉ΄λμ λν μ°Έμ‘°λ₯Ό νμλ‘ νλ€λ μ μ κ³ λ €νλ©΄ μ루μ μ΄ μλ€κ³ μκ°ν©λλ€.
@jmcrthrs μλμ, react-dnd API
@melvynhills @jmcrthrs λ΄κ° μ¬μ©ν λ€λ₯Έ λ°μ€ν¬ν dnd νλ μμν¬λ κ°κ°μ κ°λ³ ν, μ , νλͺ© λ±μ μ체 λλκ·Έ μμ€ λ°/λλ λλ‘ λμμΌλ‘ λ§λλ λμ λͺ©λ‘κ³Ό ν μ΄λΈμ λλκ·Έ μμ€/λλ‘ λμμΌλ‘ λ§λλ λ° μμ‘΄ν©λλ€. μ¬λ¬ νλͺ©μ λλκ·Ένκ³ λͺ©λ‘μ΄λ ν μ΄λΈ λ΄μμ νΉμ λλ‘ μμΉλ₯Ό κ°μ Έμ€λ ꡬνμ΄ ν¨μ¬ λ κΉλν΄μ§λλ€. λͺ©λ‘μ΄ λλκ·Έ μμ μ΄λ²€νΈλ₯Ό μμ νλ©΄ λ¨μν νμ¬ μ νλ νλͺ©μ λ³Ό μ μμ΅λλ€.
@jedwards1211 μ΄ λΌμ΄λΈλ¬λ¦¬λ‘ κ°λ₯νκ°μ? νΉν λλκ·Έκ° μμλκΈ° μ μ μ νλμ§ μμ νλͺ©μ λλκ·ΈνκΈ° μμνλ μ μ€ μΌμ΄μ€. react-dndκ° μλνλ λ°©μμΈμ§ μ λͺ¨λ₯΄κ² μ΅λλ€.
λκΈ° λμμ΄ μ¬λ¬ κ°μΈ κ²½μ°λ₯Ό ν΄κ²°ν μ¬λμ΄ μμ΅λκΉ?
νλκ° μ¬λ¬ νλͺ©μ λλκ·Ένκ³ (μ μ루μ
μ€ νλλ₯Ό μ¬μ©νμ¬) ν νλͺ©μ΄ ν μ νμ λκΈ° λμμ μκ³ λ€λ₯Έ νλͺ©μ΄ λ€λ₯Έ μ νμ μλ€κ³ κ°μ ν΄ λ³΄κ² μ΅λλ€. drop
λ λλκ·Έλ₯Ό μμν λλκ·Έ μμ€μ λν΄μλ§ νΈλ¦¬κ±°λμ§λ§ λ€λ₯Έ μμ€μλ νΈλ¦¬κ±°λμ§ μμ΅λλ€. μ΄λ μ€μΈ κ° νλͺ©μ λν΄ κ°λ³μ μΌλ‘ λλ‘μ νΈλ¦¬κ±°νλ λ°©λ²μ λν μμ΄λμ΄.
μμ:
νΈμ§: μ΄ λ¬Έμ μ λν΄ λ³λμ λ¬Έμ λ₯Ό λ§λ€μμ΅λλ€. https://github.com/react-dnd/react-dnd/issues/1650
@melvynhills μλ§λ mousedown
νΈλ€λ¬κ° νλͺ© μ νμ νΈλ¦¬κ±°νλ©΄(μ΄ μμ
μ μνν΄μΌ ν©λλ€. λ΄κ° μ¬μ©ν DnDκ° μλ λͺ¨λ μννΈμ¨μ΄λ μ΄ λ°©μμΌλ‘ μλν©λλ€), 컨ν
μ΄λ κ΅¬μ± μμκ° λλκ·Έκ° λλλ‘ React DnDμμ μ λλ‘ μλν©λλ€. λλκ·Έ μ΄λ²€νΈκ° mousedown
λ€μμ μ€κΈ° λλ¬Έμ
λλ€.
μ νν λͺ¨λ μΉ΄λλ₯Ό κ° μΉ΄λ κ΅¬μ± μμμ μ λ¬ν νμκ° μλ μ루μ μ μ‘°μ¬νμ΅λκΉ?
μ΄κ²μ κ°λ³ νλͺ© λμ 컨ν μ΄λ κ΅¬μ± μμλ₯Ό λλκ·Έ μμ€λ‘ λ§λλ κ²μ΄ μ’μ΅λλ€. React DnDλ‘ λ€μ€ μ νμ ꡬνν νμλ μμμ§λ§ μΈμ κ°λ μ¬λλ€μκ² μλλ°μ€λ₯Ό λ§λ€μ΄ μ μ§ κ΄λ¦¬κ° λ μ¬μ΄ μ κ·Ό λ°©μμ΄λΌκ³ νμ μν¬ μ μμ΅λλ€.
μμ© νλ‘κ·Έλ¨μμ react-beautiful-dndλ₯Ό μ¬μ©νμ¬ μ¬λ¬ νλͺ© λκΈ°λ₯Ό ꡬνν μ¬λμ΄ μμ΅λκΉ? μ΄μ λν νμ¬ μ루μ μ 무μμ λκΉ?
κ°μ₯ μ μ©ν λκΈ
κ΄μ¬ μλ μ¬λμ΄ μμΌλ©΄ λ€μ€ λλκ·Έ/그리λ 보기λ₯Ό ꡬννμ΅λλ€: https://codesandbox.io/s/9j897k0mwy.
cmd/ctrl λ° Shift ν€λ₯Ό μ¬μ©νμ¬ μ¬λ¬ νλͺ©μ μ νν λ€μ 그리λ μ£Όμλ‘ λλκ·Ένμ¬ μ무 κ³³μλ μ½μ ν μ μμ΅λλ€.
μ΄κ²μ μ¬μ ν ββλ°λͺ¨μ΄μ§λ§ μ½λλ₯Ό μ‘°κΈ λ μΆμννκ³ λμ€μ κ΅¬μ± μμμ ν¨ν€μ§ν μ μμ΅λλ€.