国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Taro + vue3 + js + nutUI 框架中自定義tabbar的組件封裝以及頁面跳轉(zhuǎn)的邏輯

這篇具有很好參考價值的文章主要介紹了Taro + vue3 + js + nutUI 框架中自定義tabbar的組件封裝以及頁面跳轉(zhuǎn)的邏輯。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.需求:

? 在H5 中需要封裝一個自定義的tabbar 菜單跳轉(zhuǎn) 通過nut-ui 進行二次封裝

2. 注意點

? H5 中原生的tabbar 在ios 中會出現(xiàn)問題 所以進行 封裝tabbar

3. 代碼操作


首先全部的代碼?

<template>
    <nut-tabbar v-model="selected" class="tabbar-container" size="18px" @tab-switch="handleClick">
        <nut-tabbar-item :tab-title="item.title" :value="item.value" v-for="(item, index) in tabList" :key="index">
            <template #icon="props" style="position: relative">
                <img v-if="props.active" :src="item.activeImg" />
                <img v-else :src="item.img" />
            </template>
        </nut-tabbar-item>
    </nut-tabbar>
</template>
<script setup lang="ts">
import { storeToRefs } from "pinia";
import { reactive, onMounted, watch } from "vue";
import { useTabbarStore, useUserStore } from "../../store";
import Taro, { eventCenter } from "@tarojs/taro";
const tabbarStore = useTabbarStore();
const userStore = useUserStore();
const { selected, bottomDistance } = storeToRefs(tabbarStore);
const router = Taro.useRouter();

type menu = {
    name: string;
    title: string;
    pagePath: string;
    img: any;
    activeImg: any;
    value: number;
};
watch(selected, (newValue) => {
    // Taro.setStorageSync("selectedTab", newValue);
    tabbarStore.setSelected(newValue)
});
onMounted(() => {
    tabbarStore.setSelected(Taro.getStorageSync("selectedTab") || 0)
    eventCenter.once(router.onReady, () => {
        getTabbarHeight();
    });
});
const getTabbarHeight = () => {
    const query = Taro.createSelectorQuery()
        .select(".tabbar-container")
        .boundingClientRect();
    query.selectViewport();
    query.exec(function (res) {
        if (res[0]) {
            console.log(res);

            const height = res[0].height;
            tabbarStore.setTabbarHeight(height);
        }
    });
};
const tabList = reactive<menu[]>([
    {
        name: "home",
        title: "購票",
        pagePath: "/pages/index/index",
        img: require("../../assets/tabbar/2/3.png"),
        activeImg: require("../../assets/tabbar/1/3.png"),
        value: 0,
    },
    // {
    //     name: "action",
    //     title: "訂單",
    //     pagePath: "/pages/order/index",
    //     img: require("../../assets/tabbar/2/5.png"),
    //     activeImg: require("../../assets/tabbar/1/5.png"),
    //     value: 0,
    // },
    {
        name: "report",
        title: "我的",
        pagePath: "/pages/my/index",
        img: require("../../assets/tabbar/2/4.png"),
        activeImg: require("../../assets/tabbar/1/4.png"),
        value: 0,
    },

]);
const handleClick = (item, index: number) => {
    let url = tabList[index].pagePath;

    const pages = Taro.getCurrentPages()
    const currentPage = pages[pages.length - 1]
    if (currentPage.route !== url) {
        handleToPath(url);

    }


};
const handleToPath = (url) => {
    Taro.switchTab({
        url: url,
    });
};
</script>
<style lang="scss">
@import "./customTabBar.scss";
</style>

4.解析

tabList: 菜單的內(nèi)容數(shù)組? 根據(jù)自己菜單的數(shù)量 來決定

const tabList = reactive<menu[]>([

? ? {

? ? ? ? name: "home",

? ? ? ? title: "購票",

? ? ? ? pagePath: "/pages/index/index",

? ? ? ? img: require("../../assets/tabbar/2/3.png"),

? ? ? ? activeImg: require("../../assets/tabbar/1/3.png"),

? ? ? ? value: 0,

? ? },

? ? // {

? ? // ? ? name: "action",

? ? // ? ? title: "訂單",

? ? // ? ? pagePath: "/pages/order/index",

? ? // ? ? img: require("../../assets/tabbar/2/5.png"),

? ? // ? ? activeImg: require("../../assets/tabbar/1/5.png"),

? ? // ? ? value: 0,

? ? // },

? ? {

? ? ? ? name: "report",

? ? ? ? title: "我的",

? ? ? ? pagePath: "/pages/my/index",

? ? ? ? img: require("../../assets/tabbar/2/4.png"),

? ? ? ? activeImg: require("../../assets/tabbar/1/4.png"),

? ? ? ? value: 0,

? ? },

]);、

跳轉(zhuǎn)邏輯文章來源地址http://www.zghlxwxcb.cn/news/detail-854208.html

const handleClick = (item, index: number) => {

? ? let url = tabList[index].pagePath;



? ? const pages = Taro.getCurrentPages()

? ? const currentPage = pages[pages.length - 1]

? ? if (currentPage.route !== url) {

? ? ? ? handleToPath(url);



? ? }




};

const handleToPath = (url) => {

? ? Taro.switchTab({

? ? ? ? url: url,

? ? });

};

// const pages = Taro.getCurrentPages()

? ? const currentPage = pages[pages.length - 1]

? ? if (currentPage.route !== url) {

? ? ? ? handleToPath(url);



? ? } 當(dāng)前頁面如果是當(dāng)前的菜單 那么判斷一下 根據(jù)頁面的Api 查找當(dāng)前的頁面路徑 當(dāng)頁面不存在 才跳轉(zhuǎn) 這是優(yōu)化問題

到了這里,關(guān)于Taro + vue3 + js + nutUI 框架中自定義tabbar的組件封裝以及頁面跳轉(zhuǎn)的邏輯的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • taro.js和nutui實現(xiàn)商品選擇頁面

    1. 首先安裝 Taro.js 和 NutUI: ``` npm install -g @tarojs/cli npm install taro-ui ``` 2. 創(chuàng)建 Taro 項目并進入項目目錄: ``` taro init myapp cd myapp ``` 3. 選用 Taro 模板一并安裝依賴: ``` npm install ``` 4. 在頁面目錄中創(chuàng)建商品選擇頁: ``` taro create --name goods --type page ``` 5. 在 `goods.jsx`中導(dǎo)入并使用

    2024年02月11日
    瀏覽(26)
  • Vue中自定義.js變量

    order.js文件內(nèi)容: // 訂單是否報賬 const EXPENESS_STATUS_NO=0; const EXPENESS_STATUS_YES=1; // 狀態(tài) 0-未發(fā)貨 1-發(fā)貨 2-確認(rèn)收獲 const STATUS_NO=0; const STATUS_SEND=1; const STATUS_DELIVERY=2; //? 如何不加這個,vue中引入不進來變量值 export { ? ? EXPENESS_STATUS_NO, ? ? EXPENESS_STATUS_YES, ? ? STATUS_NO, ? ? STAT

    2024年02月13日
    瀏覽(20)
  • Taro + vue3 實現(xiàn)自定義返回欄

    Taro + vue3 實現(xiàn)自定義返回欄

    算是一個簡單的返回頁面? 主要是這里 Taro +vue3 的頁面結(jié)構(gòu)還有一個?

    2024年04月29日
    瀏覽(25)
  • taro之--微信自定義tabbar

    Taro 支持使用 React、Vue、或者小程序原生語法來編寫小程序自定義 TabBar 組件。 微信小程序自定義 TabBar(React) 微信小程序自定義 TabBar(Vue3) 配置方法和微信小程序相同,開發(fā)前請仔細閱讀 《微信小程序自定義 TabBar 文檔》。 配置信息 在 app.config 中按正常填寫 tabBar 項 的

    2024年02月09日
    瀏覽(20)
  • taro+vue3 搭建一套框架,適用于微信小程序和H5

    安裝 Taro??梢栽诮K端輸入以下命令進行安裝: 創(chuàng)建項目。使用以下命令創(chuàng)建 Taro+Vue3 項目: 其中,myApp 是項目名稱。 進入項目并啟動。使用以下命令進入項目并啟動: 注意,需要先進入對應(yīng)的目錄再啟動。 編寫代碼。在 src 目錄下編寫代碼,可以像使用 Vue 開發(fā) Web 應(yīng)用程

    2024年02月10日
    瀏覽(75)
  • 在微信小程序中或UniApp中自定義tabbar實現(xiàn)毛玻璃高斯模糊效果

    在微信小程序中或UniApp中自定義tabbar實現(xiàn)毛玻璃高斯模糊效果

    backdrop-filter: blur(10px); 這一行代碼表示將背景進行模糊處理,模糊程度為10像素。這會導(dǎo)致背景內(nèi)容在這個元素后面呈現(xiàn)模糊效果。 background-color: rgb(255 255 255 / .32); 這一行代碼表示設(shè)置元素的背景顏色為白色(RGB值為0, 0, 0),并且通過/符號后面的透明度值(32%不透明度)使背

    2024年04月09日
    瀏覽(93)
  • uniapp使用vue3和ts開發(fā)小程序自定義tab欄,實現(xiàn)自定義凸出tabbar效果

    uniapp使用vue3和ts開發(fā)小程序自定義tab欄,實現(xiàn)自定義凸出tabbar效果

    要實現(xiàn)自定義的tabbar效果,可以使用自定義tab覆蓋主tab來實現(xiàn),當(dāng)程序啟動或者從后臺顯示在前臺時隱藏自帶的tab來實現(xiàn)。自定義一個tab組件,然后在里面實現(xiàn)自定義的邏輯。 組件中所使用的組件api可以看:Tabbar 底部導(dǎo)航欄 | uView 2.0 - 全面兼容 nvue 的 uni-app 生態(tài)框架 - uni-

    2024年02月04日
    瀏覽(25)
  • 使用 NutUI 搭建「自定義業(yè)務(wù)風(fēng)格」的組件庫 | 京東云技術(shù)團隊

    使用 NutUI 搭建「自定義業(yè)務(wù)風(fēng)格」的組件庫 | 京東云技術(shù)團隊

    作者:京東零售 佟恩 本文介紹,如何使用 NutUI 組件庫,搭建一套為專屬業(yè)務(wù)風(fēng)格的業(yè)務(wù)組件庫。 NutUI 是一款京東風(fēng)格的移動端組件庫。NutUI 目前支持 Vue 和 React技術(shù)棧,支持Taro多端適配。 一般組件庫,都會給用戶提供修改主題的方式。比如在 NutUI 組件庫中,給用戶提供了

    2024年02月03日
    瀏覽(43)
  • # vue3 vant4 Tabbar 標(biāo)簽欄組件的封裝 和Popup彈出層的封裝

    # vue3 vant4 Tabbar 標(biāo)簽欄組件的封裝 和Popup彈出層的封裝

    需求如上,標(biāo)簽欄里第三個是圖片,整個項目有兩種場景, 標(biāo)簽欄正常跳轉(zhuǎn)頁面, 標(biāo)簽攔渲染別的圖片時候,點擊就是打開彈出層, 封裝了標(biāo)簽欄,彈出層兩部分,作為公共組件 標(biāo)簽欄的封裝 徽標(biāo)樣式需要調(diào)整,list現(xiàn)在是自己暫時再state里寫的假數(shù)據(jù) 下面是再使用標(biāo)簽組

    2024年01月20日
    瀏覽(160)
  • vue3筆記:自定義組件

    自定義組件,舉個??: 1、封裝自定義組件 CustomList.vue src 底下 type 文件夾中聲明的 interface 接口文件 2、在 App.vue 中使用自定義組件 CustomList.vue 1、全局注冊 在 main.ts 中使用 app.component(\\\'MyComponent\\\', MyComponent) 全局注冊一個組件,可以在app內(nèi)的任何地方使用。 缺點: 無法在生產(chǎn)打

    2024年02月08日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包