当前位置: 首页 > news >正文

微信小程序学习(二)

                     WXML 与 WXSS 基础https://blog.csdn.net/qq_38060125/article/details/149577716

📝 练习任务

  1. 创建一个商品列表页面,使用 wx:for 渲染商品名称与价格
  2. 添加一个“加入购物车”按钮,点击后将商品添加到 data 中的购物车数组
  3. 实现点击删除商品功能
  4. 使用 wx:if 控制当购物车为空时显示“购物车为空”

🔁 拓展建议

  • 尝试使用 hidden 属性实现与 wx:if 类似的显示控制,理解两者区别(wx:if 不渲染 DOM,hidden 通过样式控制)
  • 使用 setData 修改数据,观察页面是否自动更新
  • 尝试使用 wx:for 嵌套结构实现更复杂的页面布局(如分类商品列表)

做法:

1.修改页面:

主要是保留了原本的,只是替换了文字和绑定的函数。然后增加了购物车。暂且不做美化。

<view wx:for="{{cart}}" wx:key="id" wx:for-index="idx"><view><text>{{item.name}} - {{item.price}}元</text><button bind:tap="addItem" data-index="{{idx}}">加入购物车</button></view>
</view><view><text>购物车</text><!-- 使用 wx:if 判断购物车是否为空 --><view wx:if="{{shoppingcart.length === 0}}"><text>购物车为空</text></view><view wx:else><view wx:for="{{shoppingcart}}" wx:key="id" wx:for-index="idx"><text>{{item.name}} - {{item.price}}元</text><button bind:tap="removeItem" data-index="{{idx}}">移除购物车</button></view></view>
</view>

效果如图:

2.修改逻辑部分:

Page({data: {cart: [{ id: 1, name: '奥特曼', price: 99 },{ id: 2, name: '铠甲勇士', price: 50 },{ id: 3, name: '假面骑士', price: 44 }],shoppingcart:[]},removeItem(e) {const index = e.currentTarget.dataset.index; // 获取点击商品的索引const newShoppingCart = this.data.shoppingcart.filter((_, i) => i !== index); // 根据索引过滤商品this.setData({ shoppingcart: newShoppingCart }); // 更新购物车数据console.log('移除后的购物车:', newShoppingCart);},addItem(e){const index = e.currentTarget.dataset.index; // 获取当前点击的商品索引const selectedItem = this.data.cart[index]; // 根据索引取出商品const shoppingcart = this.data.shoppingcart;shoppingcart.push(selectedItem); this.setData({shoppingcart // 更新购物车数据});console.log('商品已加入购物车:', selectedItem);}
})

效果:

可以正常的增加和删除。

拓展:

使用 hidden 替代 wx:if 控制购物车状态显示

原理对比:
  • wx:if
    • 元素被销毁和重新渲染。
    • 性能更高,适用于页面内容切换不频繁的场景。
  • hidden
    • 元素通过样式 display: none 隐藏,但不会被销毁。
    • 性能更差,但适用于页面内容切换频繁的场景。
使用 hidden 替代 wx:if
<!-- 使用 hidden 属性 -->
<view><text hidden="{{shoppingcart.length > 0}}">购物车为空</text><view hidden="{{shoppingcart.length === 0}}"><view wx:for="{{shoppingcart}}" wx:key="id" wx:for-index="idx"><text>{{item.name}} - ¥{{item.price}}</text><button bindtap="removeItem" data-index="{{idx}}">移除</button></view></view>
</view>

http://www.dtcms.com/a/410122.html

相关文章:

  • 微信小程序里 uni.navigateTo 用的多了, 容易报错,
  • LabVIEW通知器实现一对多数据分发
  • LabVIEW 流量检测
  • 海豚一键做淘宝网站wordpress数字链接出现404
  • 测试转C++开发面经(华为OD)
  • 新版Pycharm添加导入anaconda的python解释器
  • java_error_in_pycharm64.hprof 文件解析:作用、风险与处理建议
  • 基于微信小程序的扶贫助农系统【2026最新】
  • 免费开源的企业建站系统电子商务平台内的自然人经营者
  • Selenium+python自动化1-环境搭建
  • 大模型实时响应,通话告别预加载!
  • 解决Flexbox布局中元素无法居中的常见问题
  • AI时代:呼叫中心的存续与呼叫中心软件的蝶变
  • 基于单片机的按摩椅系统的设计(论文+源码)
  • 什么网站建设wordpress 显示文章固定链接
  • 学做沪江网站要多久广告设计培训班学校有哪些
  • pandas 基础:pandas.DataFrame.apply
  • uni-app 自定义 Android 插件详解
  • Spring IOC源码篇五 核心方法obtainFreshBeanFactory.doLoadBeanDefinitions
  • kafka和rocketmq的副本机制区别: isr 主从模式,Dledger模式
  • HTTP的持续与非持续连接,HTTP报文格式
  • 删除Notepad++关于弹窗的反动字样
  • angular2是做网站的还是手机的网站开发大概价格
  • 国内专业做悬赏的网站绵阳网站建设设计
  • 抗辐照MCU芯片在核工业水下探测耐辐照数字摄像机中的应用研究
  • 《测试视角下的软件工程:需求、开发模型与测试模型》
  • 电子证照系统国产化改造实践:从MongoDB到金仓数据库的平滑迁移与性能优化
  • 开源的容器化平台:Docker
  • 【Prompt学习技能树地图】思维链(CoT)提示技术工作原理、主要技术方法及实践应用
  • 谁有手机可以上的网站网站建设 部署与发布视频