微信小程序动态添加class,事件传参

data-参数名="值" 

bind:tap="事件名称"

<view class="tab-item {{tabIndex=='1' ? 'active' : ''}}" data-tab="1" bind:tap="tabChange">点击</view>
tabChange(event){
    console.log('tabChange', event)
    let tabIndex = event.currentTarget.dataset.tab;
    this.setData({
      tabIndex
    })
  },

 

### 微信小程序自定义 TabBar 传参方法教程 在微信小程序中,自定义 TabBar 是一种灵活的方式来实现底部导航栏。为了向自定义 TabBar 传递参数,可以通过以下几种方式实现。 #### 方法一:通过全局变量 `getApp()` 传递参数 在小程序的全局对象中存储需要传递的参数,然后在自定义 TabBar 中获取这些参数。这种方式适用于需要在多个页面或组件间共享的数据。 ```javascript // 在 app.js 中设置全局数据 App({ globalData: { tabParam: 'exampleValue' } }); // 在自定义 TabBar 的 index.js 中获取全局数据 const app = getApp(); Page({ data: { param: '' }, onLoad() { this.setData({ param: app.globalData.tabParam }); } }); ``` [^1] #### 方法二:通过 `props` 或事件绑定传递参数 如果自定义 TabBar 是以组件的形式实现,可以通过组件的属性或事件绑定来传递参数。例如,在使用 TabBar 组件时,可以在父页面中设置组件的属性。 ```html <!-- 父页面 wxml --> <custom-tab-bar param="exampleValue"></custom-tab-bar> ``` ```javascript // 自定义 TabBar 组件的 js 文件 Component({ properties: { param: { type: String, value: '' } }, attached() { console.log('接收到的参数:', this.properties.param); } }); ``` [^2] #### 方法三:通过路由跳转携带参数 在切换 Tab 页面时,可以利用 `wx.navigateTo` 或 `wx.switchTab` 携带参数。需要注意的是,`wx.switchTab` 不支持直接携带参数,但可以通过全局变量或其他方式间接传递。 ```javascript // 路由跳转携带参数 wx.navigateTo({ url: '/pages/index/index?param=exampleValue' }); // 在目标页面接收参数 Page({ onLoad(options) { console.log('接收到的参数:', options.param); } }); ``` [^3] #### 方法四:通过 `data` 属性绑定动态参数 如果需要在运行时动态更新 TabBar 的参数,可以通过父页面的数据绑定到 TabBar 组件上。 ```html <!-- 父页面 wxml --> <custom-tab-bar param="{{dynamicParam}}"></custom-tab-bar> ``` ```javascript // 父页面 js 文件 Page({ data: { dynamicParam: 'initialValue' }, updateParam() { this.setData({ dynamicParam: 'updatedValue' }); } }); ``` ```javascript // 自定义 TabBar 组件 js 文件 Component({ properties: { param: { type: String, value: '' } }, observers: { 'param': function(newVal) { console.log('参数已更新为:', newVal); } } }); ``` [^4] #### 注意事项 - 自定义 TabBar 的性能体验可能低于原生 TabBar,因此在非必要情况下建议优先使用原生方案。 - 如果使用 `wx.switchTab`,由于其不支持直接携带参数,可以考虑通过全局变量或本地存储的方式间接传递参数。 - 在动态调整 TabBar 参数时,确保及时更新组件的状态,避免数据不同步的问题。 ### 示例代码 以下是一个完整的自定义 TabBar 示例,展示了如何通过 `props` 和 `triggerEvent` 实现参数传递和交互。 ```javascript // 自定义 TabBar 组件 index.js Component({ properties: { activeIndex: { type: Number, value: 0 } }, methods: { switchTab(e) { const index = e.currentTarget.dataset.index; this.triggerEvent('tabChange', { index }); } } }); ``` ```html <!-- 自定义 TabBar 组件 index.wxml --> <view class="tabbar"> <view class="tab-item" data-index="0" bindtap="switchTab">首页</view> <view class="tab-item" data-index="1" bindtap="switchTab">分类</view> <view class="tab-item" data-index="2" bindtap="switchTab">购物车</view> <view class="tab-item" data-index="3" bindtap="switchTab">我的</view> </view> ``` ```javascript // 父页面 js 文件 Page({ data: { activeIndex: 0 }, handleTabChange(e) { const { index } = e.detail; this.setData({ activeIndex: index }); wx.switchTab({ url: `/pages/tab${index + 1}/tab${index + 1}` }); } }); ``` ```html <!-- 父页面 wxml --> <custom-tab-bar activeIndex="{{activeIndex}}" bindtabChange="handleTabChange"></custom-tab-bar> ``` [^5] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LLL_LH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值