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
очень смущает меня.
Ответы
Ответ 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
});
};