Javascript 如何将对象布尔值更新为true和false?
这是我的数据 这是我的flatlist的渲染函数 这是我的结果Javascript 如何将对象布尔值更新为true和false?,javascript,react-native,Javascript,React Native,这是我的数据 这是我的flatlist的渲染函数 这是我的结果 那是因为你的地图功能是错误的 应该是 toogleLike = (id) => { const res = this.state.data.map((item) => { if (item.cid === id) { return { ...item, islike: true, }; } return item; }); t
那是因为你的地图功能是错误的 应该是
toogleLike = (id) => {
const res = this.state.data.map((item) => {
if (item.cid === id) {
return {
...item,
islike: true,
};
}
return item;
});
this.setState({data: res});
};
如果
item.cid!==id
?我应该返回什么?如果id不匹配,您不想更改任何内容,因此您应该返回未更改的项目。一种常见的模式是使用保护条款if(item.cid!==id)return item
然后编写代码,如果id在此行之后匹配,则进行更改。根据您喜欢的样式,您也可以只使用else{return item}
(使用当前的if)。要了解她出了什么问题,您必须知道她出了什么问题。map
将每个项目映射到一个新值,因此如果您不返回任何内容,则当前元素将映射到未定义的
,因为这是没有return
语句的函数的返回值。
<TouchableOpacity onPress={() => this.toogleLike(item.cid)}>
<MaterialIcons
name="favorite"
size={25}
color={item.islike ? 'red' : 'black'}
style={{alignSelf: 'center'}}
/>
</TouchableOpacity>
toogleLike = (id) => {
// console.log(this.state.data);
const res = this.state.data.map((item) => {
if (item.cid === id) {
return {
...item,
islike: true,
};
}
});
console.log(res);
this.setState({data: res});
};
[
undefined,
undefined,
undefined,
undefined,
{
"addrs": "H # 331/A, Block-C, Gulshan-E-Ravi,Lahore",
"cid": 5,
"clean_rtng": "4",
"contPrsn": "Mr. Shezad Ali, +92-313-0226224",
"id": 4,
"img": 9,
"islike": true,
"name": "Cold Coffee",
"overall_rtng": "3",
"price_rtng": "2",
"qlty_rtng": "5"
}
]
toogleLike = (id) => {
const res = this.state.data.map((item) => {
if (item.cid === id) {
return {
...item,
islike: true,
};
}
return item;
});
this.setState({data: res});
};