React-dnd $ splice做了什么

Che*_*eng 15 reactjs react-dnd

我正在阅读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]
        ]
      }
    }));}
Run Code Online (Sandbox Code Playgroud)

这个$ splice与本页解释的相同吗?

任何人都可以解释一下这段代码的作用是什么吗?这个$splice功能对我很困惑.

goo*_*yun 19

它基本上是普通拼接功能的不可变版本,例如

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

这些Immutability Helpers不是直接操作目标数组,而是通过创建和分配新状态来帮助您更新状态.


Hit*_*ahu 6

我花了一段时间才明白。这是常规箭头函数中的分步说明

  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
    });
  };
Run Code Online (Sandbox Code Playgroud)