鸿蒙中@observed与@ObjectLink的使用

interface good{
  id:string,
  name:string,
  img?:string
}
//observed要配合组件一起使用
@Observed
class Cartlist{
  id:string;
  product:good;
  count:number;
  constructor(count:number,product:good) {
    this.id=""+Date.now()
    this.product=product
    this.count=count
  }
}
@Component
struct cartItem{
  //与observed搭配使用
  @ObjectLink item:Cartlist
  build() {
    Row(){
      Text(this.item.product.name)
      Text(this.item.count+'')
    }
    .justifyContent(FlexAlign.SpaceBetween)
  }
}
@Entry
@Component
struct Goodlsit {
  @State message: string = 'Hello World';
  @State cartlist:Cartlist[]=[]
  @State goodlist:good[]=[
    {
      id:"1",
      name:"熊大",
    },
    {
      id:"2",
      name:"熊二"
    },
    {
    id:"3",
    name:"熊三"
    }
    ]
  build() {
   Column(){
     ForEach(this.goodlist,(item:good)=>{
       Row(){
         Text(item.name)
         Button("加入购物车")
           .onClick(()=>{
             const myindex =this.cartlist.findIndex((a:Cartlist)=>a.product.id==item.id)
             if(myindex>-1){
               this.cartlist[myindex].count=this.cartlist[myindex].count+1
             }
             else {
               this.cartlist.push(new Cartlist(1,{
                 id:item.id,
                 name:item.name,
                 img:item.img
               }))
             }
           })

       }
     })
     Text("购物车")
     List(){
       ForEach(this.cartlist,(item:Cartlist)=>{
         ListItem(){
            cartItem({item:item})
         }
       })
     }
   }
  }
}

他们两个必须搭配使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值