2015-11-26 2 views
13

Je lis an example of the React-dnd project:

moveCard(dragIndex, hoverIndex) { 
    const { cards } = this.state; 
    const dragCard = cards[dragIndex]; 

    this.setState(update(this.state, { 
     cards: { 
     $splice: [ 
      [dragIndex, 1], 
      [hoverIndex, 0, dragCard] 
     ] 
     } 
    }));} 

Est-ce épissure $ le même expliqué on this page?

Quelqu'un pourrait-il expliquer ce que fait ce morceau de code? La fonction $splice est très confuse pour moi.

Répondre

16

Il est essentiellement une version immuable des fonctions d'épissure simples tels que

newcards.splice(dragIndex, 1); // removing what you are dragging. 
newcards.splice(hoverIndex, 0, dragCard); // inserting it into hoverIndex. 

Au lieu de manipuler directement le tableau cible, les Helpers immuabilité aident vous mettez à jour l'état en créant et en attribuant un nouvel état.