λ κ° μ΄μμ μνΈ μ΄μ© κ°λ₯ν μ λ ¬ κ°λ₯ν λͺ©λ‘μ μ¬μ©νλ κ²½μ° ν 컨ν μ΄λμμ λ€λ₯Έ 컨ν μ΄λλ‘ νλͺ©μ λ λ trueλ₯Ό λ°νν΄μΌ νλ κ²½μ° monitor.isDragging()μ΄ falseλ₯Ό λ°ννλ κ²½μ°κ° μμ΅λλ€.
μ€μ : κ°λ¨ν μ λ ¬ κ°λ₯ν λ°λͺ¨μμ μμνμ¬ λ€λ₯Έ 컨ν μ΄λμ μ λ ¬ κ°λ₯ν κ°μ²΄ μ§ν©μ μΆκ°ν©λλ€. μΉ΄λλ ν 컨ν μ΄λμμ λ€λ₯Έ 컨ν μ΄λλ‘ λλκ·Έν μ μμ΄μΌ νκ³ , μ체 컨ν μ΄λ λ΄μμ μ λ ¬ν μ μμ΄μΌ νλ©°, ν 컨ν μ΄λμμ λ€λ₯Έ 컨ν μ΄λλ‘ λλκ·Έν λ μ λ ¬ν μ μμ΄μΌ ν©λλ€.
μ΄ λ¬Έμ λ ν 컨ν μ΄λμμ λ€λ₯Έ 컨ν μ΄λλ‘ μΉ΄λλ₯Ό μ΄λν λ λ°μν©λλ€. μΉ΄λ κ΅¬μ± μμλ λΆν¬λͺ λλ₯Ό κ²°μ νκΈ° μν΄ isDragging μμ±(DragSource λ°μ½λ μ΄ν°μ μν΄ μ£Όμ λ¨)μ μμ‘΄νμ§λ§, νλͺ©μ΄ ν 컨ν μ΄λμμ λ€λ₯Έ 컨ν μ΄λλ‘ λλκ·Έλ λ μ μ λͺ¨λν°λ λλκ·Έλ κ΅¬μ± μμμ λ μ΄μ μΌμΉνμ§ μλ sourceIdλ₯Ό λ³κ²½νκ³ κ²°κ΅ λ°νλ©λλ€. trueλ₯Ό λ°νν΄μΌ ν λ isDraggingμ λν νΈμΆμ λν΄ falseμ λλ€.
λλκ·Έ μμ€μλ λλκ·Έ κ°λ₯ν κ°μ²΄λΉ μΌκ΄λ μ μ κ³ μ ν€κ° μ΄λ―Έ νμνκΈ° λλ¬Έμ(λλκ·Έ κ°λ₯ν κ΅¬μ± μμμ ν€κ° μΈμ λ μ§ λ³κ²½λλ©΄ λ€λ₯Έ νλͺ©μ μ€μ λ‘ μ€μλν¨) ν 컨ν μ΄λμμ λλκ·Έκ° μ¬λ°λ₯΄κ² μλνλλ‘ sourceIdλ₯Ό μ§μ ν λ μ½λμμ ν΄λΉ ν€λ₯Ό μ¬μ©ν μ μμ΅λκΉ?
μμ μ½λκ° νμνλ©΄ μλ €μ£Όμμμ€. μ΄ λ¬Έμ λ₯Ό 보μ¬μ£Όλ λ΄ μ½λλ κ°λ¨ν μ λ ¬ κ°λ₯ν λ°λͺ¨λ₯Ό κΈ°λ°μΌλ‘ ν©λλ€.
@amoenk μ, λμμ΄ λλ μμ μ½λκ° νμν©λλ€.
λΉμ μ λμμ μ£Όμ μ κ°μ¬ν©λλ€! μλ μλ λ€μκ³Ό κ°μ΅λλ€. http://notlouieagain.com/~amoenk/dnd/
κ·Έλ¦¬κ³ μ΄ λ§ν¬λ λ²λ€λμ§ μμ μ½λλ₯Ό μ°Ύμλ³Ό μ μμ΅λλ€. http://notlouieagain.com/~amoenk/dnd/js/
μ, λλ²κΉ νλ λμ μ λ ¬ κ°λ₯ν μλμ κ°λ¨ν λ°λͺ¨ μ½λλ ν¬ν¨νμ§λ§ μ€μν κ΅¬μ± μμλ Ingredientμ IngredientGroupμ λλ€.
κ·νμ μ½λλ₯Ό μ΄ν΄λ³΄μμ§λ§ DnDStudy
κ΅¬μ± μμλ₯Ό μ°Ύμ μ μλ κ² κ°μ΅λλ€. λΉμ μ μμ ν μ½λμ λΉμ μ κ²λ§ 보μ¬μ€ μ μμ΅λκΉ? λ°λͺ¨ μ½λλ₯Ό μ κ±°ν μ μμ΅λλ€.
λ°λͺ¨ μ½λ μ κ±°, DnDStudy κ΅¬μ± μμλ μ¬κΈ°μμ νμ΄μ§ κ΅¬μ± μμμ λλ€: http://notlouieagain.com/~amoenk/dnd/js/pages/DnDStudy.react.js
μ’μ, λ΄κ°λ³΄κ³ νκ³ λλ κ·Έκ²μ΄ μΈν΄μ ν€μ λ¬Έμ κ°μμ μ μλ€κ³ μκ° IngredientGroup
λ΄λΆ DnDStudy
. λμ λ°°μ΄μ μΈλ±μ€μ μμ‘΄, μ μ¬ν λͺ κ°μ§ κ³ μ ν IDλ₯Ό μ¬μ©νλ €κ³ Ingredient
λ΄λΆ IngredientGroup
.
μ½λκ° μ λ°μ΄νΈλμμ§λ§ μ¬μ ν λμΌν λ¬Έμ μ λλ€.
νμΈ. κ·Έλ λ΄κ° νλ Έλ€.
@gaearon λμμ€λ?
isDragging
κ° κ΅¬μ± μμ νΈλ¦¬μμ μλνλ €λ©΄ λλκ·Έ μμ€μ isDragging
λ₯Ό μλμΌλ‘ ꡬννμμμ€.
const ingredientSource = {
beginDrag(props) {
return { ingredient: props.ingredient };
},
isDragging(props, monitor) {
return props.ingredient === monitor.getItem().ingredient;
}
};
isDragging(props, monitor)
: μ ν μ¬νμ λλ€. κΈ°λ³Έμ μΌλ‘ λκΈ° μμ μ μμν λκΈ° μμ€λ§ λκΈ°λ‘ κ°μ£Όλ©λλ€. μ¬μ©μ μ μisDragging
λ©μλλ₯Ό μ μνμ¬ μ΄ λμμ μ¬μ μν μ μμ΅λλ€.props.id === monitor.getItem().id
μ κ°μ κ²μ λ°νν μ μμ΅λλ€. λλκ·Ένλ λμ μλ κ΅¬μ± μμκ° λ§μ΄νΈ ν΄μ λκ³ λμ€μ λ€λ₯Έ μμ μμλ‘ "λΆν"λ μ μλ κ²½μ° μ΄ μμ μ μννμμμ€. μλ₯Ό λ€μ΄, Kanban 보λμ λͺ©λ‘μμ μΉ΄λλ₯Ό μ΄λν λ λλκ·Έν λͺ¨μμ μ μ§νκΈ°λ₯Ό μν©λλ€. λΉλ‘ κΈ°μ μ μΌλ‘ κ΅¬μ± μμκ° λ§μ΄νΈ ν΄μ λκ³ λ€λ₯Έ λͺ©λ‘μΌλ‘ μ΄λν λλ§λ€ λ€λ₯Έ μΉ΄λκ° λ§μ΄νΈλλλΌλ λ§μ λλ€. _μ°Έκ³ : μ΄ λ©μλ λ΄μμmonitor.isDragging()
νΈμΆν μ μμ΅λλ€._
λμμ΄ λλμ?
μλ²½νκ² μλν©λλ€! λ¬Έμμμ κ·Έκ²μ λμ³€μ κ²μ λλ€.
λμμ£Όμ μ κ°μ¬ν©λλ€! ν°μΌμ λκ² μ΅λλ€.
λ¬Έμ μμ΄μ. λμ μ€ μμμ΄μ κΈ°λ».
μΌμ ! http://notlouieagain.com/μ λν λ§ν¬κ° μλ΅νμ§ μμ΅λλ€ ...
λ¬Έμ μ κ·Όλ³Έ μμΈμ μ°Ύμμ΅λλ€. DropTargets λ° DragSourcesλ₯Ό λννκΈ° μν΄ DragDropContextProvider μ¬μ©μ μ€λ¨ν΄μΌ νμ΅λλ€. μλμ μλ₯Ό μ°Έμ‘°νμμμ€.
http://react-dnd.github.io/react-dnd/docs-drag-drop-context-provider.html
export default class YourApp {
render() {
return (
<DragDropContextProvider backend={HTML5Backend}>
/* ... */
</DragDropContextProvider>
)
}
}
λμ DragDropContextλ₯Ό μ¬μ©νμ¬ μλμ κ°μ΄ μ 체 ν΄λμ€λ₯Ό λνν΄μΌ νμ΅λλ€.
http://react-dnd.github.io/react-dnd/docs-drag-drop-context.html
class YourApp {
/* ... */
}
export default DragDropContext(HTML5Backend)(YourApp)
μ΄κ²μ μ¦μ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
isDragging
κ° κ΅¬μ± μμ νΈλ¦¬μμ μλνλ €λ©΄ λλκ·Έ μμ€μisDragging
λ₯Ό μλμΌλ‘ ꡬννμμμ€.DragSource
λ¬Έμ μ°Έμ‘° :λμμ΄ λλμ?