gpt4 book ai didi

react-native - FlatList 单选单元格

转载 作者:行者123 更新时间:2023-12-04 05:09:05 25 4
gpt4 key购买 nike

我遵循了官方文档中的示例,这是实现多选功能的方法:

state = { selected: (new Map(): Map<string, boolean>) };

onPressItem = (id) => {
this.setState((state) => {
const selected = new Map(state.selected);
selected.set(id, !selected.get(id));
return { selected };
});
};

不过,我正在努力使其成为单选。任何时候点击单元格都可以很容易地返回带有错误值的新 map ,但这意味着无法通过再次点击单元格来取消选择该单元格,这在我的情况下是所需的功能。

onPressItem = (id) => {
this.setState((state) => {
const selected = new Map();
selected.set(id, !selected.get(id));
return { selected };
});
};

你将如何实现它?我应该使用 lodash 迭代 Map 以找到已经为真的那个并改变它的值(现在确定如何迭代 Map ),或者也许我现在缺少一些更好的方法?

编辑

迭代 selected 的元素 map 似乎是一个非常丑陋的想法,但它很简单,而且确实有效。有没有更好的方法来做到这一点,我错过了?

onPressItem = (id: string) => {
this.setState((state) => {
const selected = new Map(state.selected);
selected.set(id, !selected.get(id));
for (const key of selected.keys()) {
if (key !== id) {
selected.set(key, false);
}
}
return { selected };
});
};

提前致谢

最佳答案

您可以只设置一个值而不是像这样的 map

onPressItem = (id) => {
this.setState((state) => {
const selected = selected === id ? null : id;
return { selected };
});
};

关于react-native - FlatList 单选单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50216549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com