Javascript 如何将对象布尔值更新为true和false?

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

这是我的数据

这是我的flatlist的渲染函数

这是我的结果


那是因为你的地图功能是错误的

应该是

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});
};