为了账号安全,请及时绑定邮箱和手机立即绑定

如何在数组中的对象项上设置状态

如何在数组中的对象项上设置状态

慕村9548890 2021-11-12 17:44:48
当心形图标按下它时,我想更新数组对象中关键心形的状态更改为红色,因此为此我使用了本机图标,并且在单击它时使用 heart 和 hearto 进行切换这是代码:state = {                localAdversiment: [            {              title: "Ecloninear 871",              image: require("../../assets/images/truck_image.png"),              year: "2015",              type: "Truck",              status: "new",              price: "$ 2000",              heart: "hearto"            }这里是按下心脏图标时调用的函数 handleFavourite = index => {    const { heart } = this.state.localAdversiment[index];    this.setState(      {        heart: "heart"      }    );  };这是心形图标代码<TouchableOpacity onPress={() => this.handleFavourite(index)}>                <Icon                  name={item.heart}                  type={"AntDesign"}                  style={{ fontSize: 18 }}                />              </TouchableOpacity>请帮助我如何在单击时将心更新为心而不是心
查看完整描述

2 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

您可以通过以下方法轻松完成


state = {      

          localAdversiment: [

            {

              id: 0,

              title: "Ecloninear 871",

              image: require("../../assets/images/truck_image.png"),

              year: "2015",

              type: "Truck",

              status: "new",

              price: "$ 2000",

              heart: "hearto",

              selected: false

            }

}

现在在 onPress 做这个


handleFavourite = (item) => {

   const { id } = item;

   this.setState({

       localAdvertisement: this.state.localAdvertisement.map((item) => {

         if(item.id === id){

           return {

              ...item,

              selected: !item.selected  

           }

         }


         return item


    })

  })

};

现在像这样渲染


             <TouchableOpacity onPress={() => this.handleFavourite(item)}>

                <Icon

                  name={item.selected ? "heart" : 'hearto'}

                  type={"AntDesign"}

                  style={{ fontSize: 18 }}

                />

              </TouchableOpacity>

希望它会帮助你


查看完整回答
反对 回复 2021-11-12
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

编辑此函数如下:


handleFavourite = index => {

    let updatedlocalAdversimentStates = this.state.localAdversiment;

    updatedlocalAdversimentStates[index].heart = "heart";

    this.setState(

      {

        localAdversiment: updatedlocalAdversimentStates

      }

    );

  };


查看完整回答
反对 回复 2021-11-12
  • 2 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信