我正在尝试为删除的对象更新对象数组中的一个值NAME = myprog
CC = gcc
CFLAGS = -Wall -O3 -I $(INCDIR)
LDFLAGS = -lpthread -lm
SRCDIR = ./src
INCDIR = ./include
BINDIR = /usr/local/bin
SOURCES = $(SRCDIR)/main.c $(SRCDIR)/dummy_functions.c
OBJECTS = $(SOURCES:.c=.o)
all: $(NAME)
$(NAME): $(OBJECTS)
$(CC) $^ -o $@ $(CFLAGS) $(LDFLAGS)
$(SRCDIR)/%.o: %.c
$(CC) $^ -c $< $(CFLAGS) $(LDFLAGS)
clean:
...
。
is_deleted
输出
const handleDelete = (idx) => {
const filteredCards = cards.map((card, i) => {
if(i == idx) {
card.is_deleted = true;
return {...cards}
}
})
setCards(filteredCards);
}
所需的输出
cards = [
undefined,
[
{ id: 1, is_deleted: false },
{ id: 2, is_deleted: true },
]
]
输出部分正确-在索引1,我看到了两张卡,第二张cards = [
{ id: 1, is_deleted: false },
{ id: 2, is_deleted: true },
]
被设置为is_deleted
。但是,在索引0处有一个“未定义”。
任何了解为什么这样做都是有帮助的!谢谢,让我知道是否错过了关键信息。
答案 0 :(得分:1)
您可以直接访问卡,而无需使用map
:
let cards = [
{ id: 1, is_deleted: false },
{ id: 2, is_deleted: false },
]
const setCards = c => cards = c(cards.slice())
const handleDelete = idx => setCards(cards => (cards[idx].is_deleted = true, cards))
handleDelete(1)
console.log(cards)
setCards
函数只是模仿react的useState
。