vue3 项目笔记

修改第三方组件样式
如果有变量则修改变量,没有则修改类样式 通过 :deep(类名)修改

 :deep(.home){
    width: 150px;
   }

隐藏底部的tabbar栏,某些页面跳转之后不用显示底部tabbar
方法一: 通过路由的 meta 参数添加一个布尔值,拿到当前活跃路由,通过布尔值判断是否显示

 {
            path: '/city',
            component: () => import('@/views/city/city.vue'),
            meta: {
                isTabBar: true
            }
        }
<template>
  <div>
    <router-view></router-view>
    <tab-bar  v-if="!route.meta.isTabBar"/>
  </div>
</template>
<script setup>
import { useRoute } from "vue-router";
import tabBar from "./components/tab-bar/tabbar.vue";
const route = useRoute();
</script>

方法二:通过设置高度遮挡 tabbar,在公共的css 设置样式,在需要使用的页面引用

css

.to-page{
    height: 100vh;
    position: relative;
    z-index: 9;
    background-color: #fff;
    overflow-y: auto;
}

vue

 <div class="to-page">
        city
  </div>

安装vant

npm install vant

按需引入组件

npm i @vant/auto-import-resolver unplugin-vue-components -D

使用 直接拿vant 示例代码,无需再引入 列如按钮

<van-button type="primary">主要按钮</van-button>
<van-button type="success">成功按钮</van-button>
### Vue 3 重要项目事件笔记 #### 组件通信方式的变化 Vue 3 中移除了事件总线,推荐使用 `mitt` 来替代。这使得跨组件通信更加简洁高效[^1]。 ```typescript // src/utils/emitter.ts import mitt from &#39;mitt&#39;; const emitter = mitt(); export default emitter; ``` 通过上述代码创建了一个全局事件中心实例,在不同组件间可以方便地进行消息传递: - 使用 `emitter.on(eventName, callback)` 订阅特定名称的事件; - 调用 `emitter.emit(eventName[, args...])` 发布指定类型的事件给监听者处理; - 执行 `emitter.off([eventName][, handler])` 或 `emitter.all.clear()` 可取消订阅单个/全部事件。 #### 状态管理库升级 原有的 Vuex 库已被 Pinia 替代作为官方首选的状态管理模式。Pinia 提供更灵活易懂API设计以及更好的 TypeScript 支持特性。 #### v-model 的改进 `.sync` 修饰符的功能已经被整合进了增强版 `v-model` 内部逻辑里,简化了父子组件之间双向绑定的操作流程。 #### 新增 setup 函数 Composition API 是 Vue 3 推出的一项重大革新,其中核心部分就是引入了 `setup` 配置选项。它允许开发者在一个地方集中定义响应式变量、计算属性、侦听器等功能模块,从而提高代码可读性和维护性[^2]。 ```javascript <script> import { ref, computed } from &#39;vue&#39;; export default { props: [&#39;title&#39;], setup(props) { const count = ref(0); const doubleCount = computed(() => count.value * 2); return { count, increment: () => (count.value += 1), decrement: () => (count.value -= 1), doubledTitle: computed(() => `${props.title}-${doubleCount}`) }; } }; </script> ``` #### 实现防抖功能 利用自定义 Ref 和定时器机制来实现简单的防抖效果,适用于输入框自动补全等场景下减少不必要的请求次数[^4]。 ```typescript // useDebounceRef.ts import { customRef } from "vue"; function debounce<T>(initValue:T, delay:number){ let timeoutId: NodeJS.Timeout | null; return customRef((track, trigger)=>{ return{ get(){ track(); return initValue; }, set(newValue){ if(timeoutId !== null){ clearTimeout(timeoutId); } timeoutId = setTimeout(()=>{ initValue = newValue; trigger(); timeoutId = null; },delay); } } }); } export default debounce; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值