赞
踩
图为底部tabbar
代码及对应点击tabbar方法:
- <view class="tab-item" v-for="(item, index) in tabs" :key="index" @click="switchTab(index)"
- :class="{ 'active': currentTab === index }">
- <!-- 图标和文本根据实际需要进行替换 -->
- <!-- <text class="tab-icon">{{ item.icon }}</text> -->
- <text class="tab-text" :class="{ 'active': currentTab === index }">{{ item.text }}</text>
- </view>
- switchTab(index) {
- const tab = this.tabs[index]
- this.currentTab = index
- if (tab) {
- uni.switchTab({
- url: tab.pagePath
- })
- }
- },
步骤一:在vuex中设置tabIndex(store/index.js)
- import { createStore } from 'vuex'
- const store = createStore({
- state:{//存放状态
- "tabIndex":0
- }
- })
-
- export default store
步骤二:在组件中调用state(这里如果在js文件中使用this.$store.state.属性名,则不需要import引入store)
引入
import store from '@/store/index.js'; //需要引入store
新增方法
- setTabIndex(tabIndex) {
- console.log(store.state.tabIndex)
- store.state.tabIndex = tabIndex
- }
在uni.switchTab中,跳转页面成功时调用
- switchTab(index) {
- const tab = this.tabs[index]
- store.state.tabIndex = index
- this.currentTab = index
- if (tab) {
- uni.switchTab({
- url: tab.pagePath,
- success: () => {
- this.setTabIndex(index)
- }
- })
- }
- },
步骤三:删除原本data中的currentTab,使用计算属性将tabIndex给到currentTab
- computed: {
- currentTab() {
- return store.state.tabIndex
- }
- },
此时html无需改变:
- <view class="tab-item" v-for="(item, index) in tabs" :key="index" @click="switchTab(index)"
- :class="{ 'active': currentTab === index }">
- <!-- 图标和文本根据实际需要进行替换 -->
- <!-- <text class="tab-icon">{{ item.icon }}</text> -->
- <text class="tab-text" :class="{ 'active': currentTab === index }">{{ item.text }}</text>
- </view>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。