Подтвердить что ты не робот

React-dnd, что делает $splice

Я читаю пример проекта React-dnd:

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

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

Является ли этот $splice тем же самым, что объясняется на этой странице?

Может кто-нибудь объяснить, что делает этот кусок кода? Функция $splice очень смущает меня.

4b9b3361

Ответ 1

В основном это неизменная версия простых функций сплайсинга, таких как

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

Вместо прямого манипулирования целевым массивом эти помощники по невосприимчивости помогают вам обновлять состояние, создавая и назначая новое состояние.

Ответ 2

Мне понадобилось время, чтобы понять. Вот пошаговое объяснение в обычной функции стрелки

  moveCard = (dragIndex, hoverIndex) => {
    // list of cards
    let newcards = this.state.cards; 

    // dragCard is card we are dragging
    let dragCard = newcards[dragIndex]; 

   // removing this dragCard from array
    newcards.splice(dragIndex, 1);

     // insert dragCard at hover position
    newcards.splice(hoverIndex, 0, dragCard); 

    // update State
    this.setState({
      cards: newcards
    });
  };