react-native - 无法使用 useState 更改函数组件上的数组数据
问题描述
当用户单击每个项目时,我有一个列表会更改我的数组数据。
我的性别数组第一个数据是这样的:
[
{optionName: "Man", sex: 1, selected: true},
{optionName: "Woman", sex: 1, selected: false}
]
const [genderOption, setGenderOption] = useState(gender);
onItemPress = (item, i) => {
console.log('print i', i);
console.log('click genderOption', genderOption);
genderOption.map((value, index) => {
genderOption[index].selected = false;
} );
console.log('after genderOption', genderOption);
genderOption[i].selected = true;
console.log('final genderOption', genderOption);
// setGenderOption([...genderOption]);
// setTimeout(() => {
// console.log('timeOut !');
// setGenderOption([...genderOption]);
// }, 5000);
}
console.log('genderOption', genderOption);
return (
// my listView has onPress function trigger onItemPress()
);
当点击指数=== 0
当点击指数=== 1
这是我使用的时候setTimeout
解决方案
selected
您可以通过映射先前的状态并通过比较索引进行设置来轻松解决此问题
const onItemPress = (item, i) => {
setGenderOption(prevState => prevState.map((gender, index) => ({
...gender,
selected: i === index,
}));
};
推荐阅读
- javascript - 如何正确使用nodejs将嵌套数组中的多条记录发布到mysql表中?
- java - Java改linux fedora + KDE壁纸
- python - 遍历 python 列表并提取在第二个列表中找到的所有匹配字符串
- c - 没有开关盒循环我怎么能做到(例如计数器)
- r - 仅选择包含 R 中具有两列的表的列表的元素
- html - CSS 悬停效果。元素的边框没有被覆盖
- c++ - 指针数组和函数 CPP
- python - pandas read csv - 在使用空格分隔符时识别引号中的条目?
- python - 改进推荐找到最近的歌曲
- arrays - 无法在不打印数组内容的情况下访问数组中的内存位置