1-5、组件父传子,渲染数据

本文介绍了Vue.js中组件通信的方式,重点讲解了父组件如何将数据通过props传递给子组件,并展示了如何在子组件中处理数据变化,通过@state-change事件将状态更新回父组件。同时,文中提供了具体的代码示例,包括子组件的prop定义和父组件的使用方式。
摘要由CSDN通过智能技术生成

 Good:

      <div class="custom-control custom-checkbox">
        <!-- 复选框 -->
        <!-- 用:checked="state" 而不用 v-model:"变量"-->
        <input type="checkbox" class="custom-control-input" 
        :id="'cb' + id" :checked="state" @change="stateChange" />
        <label class="custom-control-label" :for="'cb' + id">
          <!-- 商品的缩略图 -->
          <img :src="pic" alt="" />
        </label>
      </div>

prop和data同级和methods

  props: {
    // 商品的 id
    // 为啥在这里要封装一个 id 属性呢?
    // 原因:将来,子组件中商品的勾选状态变化之后, 需要通过子 -> 父的形式,
    // 通知父组件根据 id 修改对应商品的勾选状态。
    //      required: true, 是“必须”传的
    id: {
      required: true,
      type: Number
    },
    // 要渲染的商品的标题
    title: {
      default: '',
      type: String
    },
    // 要渲染的商品的图片
    pic: {
      default: '',
      type: String
    },
    // 商品的单价
    price: {
      default: 0,
      type: Number
    },
    // 商品的勾选状态
    state: {
      default: true,
      type: Boolean
    },
    // 商品的购买数量
    count: {
      type: Number,
      default: 1
    }
  },

App.vue

        <Goods
          v-for="item in list"
          :key="item.id"
          :id="item.id"
          :title="item.goods_name"
          :pic="item.goods_img"
          :price="item.goods_price"
          :state="item.goods_state"
          :count="item.goods_count"
          @state-change="getNewState"
        ></Goods>

      data() {
        return {
          // 用来存储购物车的列表数据,默认为空数组
          list: []
        }
      },

        // 封装请求列表数据的方法
        async initCartList() {
          // 调用 axios 的 get 方法,请求列表数据
          const { data: res } = await axios.get('https://www.escook.cn/api/cart')
          // 只要请求回来的数据,在页面渲染期间要用到,则必须转存到 data 中
          if (res.status === 200) {
            this.list = res.list
          }
        },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值