美文网首页
2023.23 使用vue3问题记录

2023.23 使用vue3问题记录

作者: wo不是黄蓉 | 来源:发表于2023-05-14 21:24 被阅读0次

highlight: ascetic
theme: fancy


大家好,我是wo不是黄蓉,今年学习目标从源码共读开始,希望能跟着若川大佬学习源码的思路学到更多的东西*。

  • 使用数据存储pinia
//main.ts
import { createPinia } from 'pinia'
app.use(createPinia())

定义store

//store/modules/user
import { defineStore } from 'pinia'
import { getUserInfo } from '@/api/common'
import { UserState } from '@/@types/store'

export const useUserStore = defineStore('user', {
  state: (): UserState => ({
    userInfo: null
  }),

  getters: {
    user(state) {
      return state.userInfo
    }
  },

  actions: {
    async getUserInfo() {
      this.userInfo = await getUserInfo()
    }
  }
})

使用store


import { useUserStore } from '@/store/modules/user'
  const userStore = useUserStore()//获取用户信息
  • 路由跳转,页面引入路由,不使用$router,使用router.push(xxx)

import router from '@/router' 
router.push({ name: 'billInfo', params: { billCode: billCode.value } })
  • 获取路由参数信息:

//路由跳转
import { useRoute } from 'vue-router'
const route = useRoute()
route.params
  • 使用生命周期函数
import {  onMounted, onDeactivated, } from 'vue'
onMounted(() => {
 //xxx
})
onDeactivated(() => {
 //xxx
})
  • 使用生命周期函数onMounted ts提示报错,引入onMounted使用没问题,ts提示“"vue"”没有导出的成员“onMounted”。你是否指的是“onUnmounted”
  • 使用watch,其他computednextTick方法类似,对比vue2没有filters方法了,filters可以用函数实现

import {  watch } from 'vue'
const refScrollTop = ref<number>(0)
watch(refScrollTop, (val) => {})
  • 路由注册方式
//router/index.ts
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'
const router = createRouter({
  history: createWebHistory(),
  routes
})

export default router

//main.ts注册
import router from '@/router'
app.use(router).mount('#app')
  • 父组件给子组件传参
//父组件
<tabs :tab-list="tabList" @changeTab="changeTab"></tabs>
//子组件
const props = defineProps(['tabList'])//属性传参
const tabList = ref(props.tabList)
  • 子组件给父组件传参
//父组件
<tabs :tab-list="tabList" @changeTab="changeTab"></tabs>
function changeTab(index: number) {
  activeTab.value = index
}
//子组件
const emits = defineEmits(['changeTab'])
  • Vue组件使用setup+ts语法

<script setup lang="ts" name="HomePage"></script>

相关文章

网友评论

      本文标题:2023.23 使用vue3问题记录

      本文链接:https://www.haomeiwen.com/subject/bdopsdtx.html