javascript - React Native - 突出显示平面列表中的项目
问题描述
我得到了这个功能来突出显示平面列表中的一个项目。它确实突出显示它,当按下但再次按下时不会取消选择该值并且它不会将其保存到状态。我正在使用 React 钩子来管理状态。数据是一个对象数组。我只想添加取消选择此函数中的值的功能。
const [selected, setSelect] = useState(Data);
const presshandler = (id) => {
setSelect((prev) => {
return prev.map((item) => {
if (item.id !== id) return item;
return {
...item,
selectedClass: item.id ? styles.selected : null,
};
});
});
};]]
<List
source={selected}
keyExtractor={(item) => item.id}
extraData={setSelect}
renderItem={({ item }) => (
<TouchableOpacity
onPress={() => presshandler(item.id)}
>
<View>
<ListDetails
item={item}
/>
</View>
</TouchableOpacity>
解决方案
只需更改条件即可解决此问题item.selectedClass ? null : styles.selected
const presshandler = (id) => {
setSelect((prev) => {
return prev.map((item) => {
if (item.id !== id) return item;
return {
...item,
selectedClass: item.selectedClass ? null : styles.selected,
};
});
});
};]]
推荐阅读
- java - 如何标记括号?
- java - Java 8 Stream 从对象映射创建一个对象
- android - ANDROID_ID 调用空对象错误 Firebase 数据库
- php - 我的 php 代码说我在数据库中没有任何内容,尽管我有。我的代码有什么问题?
- windows - 如何防止 Windows 10 在我的设备上安装游戏?
- google-app-maker - AppMaker 表中的条件格式
- angular - 忽略部分路由路径
- python - 试图通过字符替换将一个文本翻译成另一个文本,输出不正确
- c# - 在 SQL 作业中执行 SSIS 包失败
- angular - 在不同地方订阅一个 observable