Vue3基础用法

255 阅读1分钟

前言

  • 在Vue3中,相对于Vue2来说,有很多的方法都是一样的,只是使用的时候不同。

VueRouter

VueRouter中总共有八个钩子,常用的有三个createRouterbeforeEachafterEach,使用方法如下。

import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/about',
    name: 'About',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
  }
]

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes
})

export default router

component引入有两种方法一种是正常的import Home from '../views/Home.vue'还有一种就是懒加载引入了。 在这之中也可使用在每个对象里添加meta或者是白名单进行路由拦截,需要用到router.beforeEach


// 挂载路由守卫
router.beforeEach((to, from, next) => {
  // to and from are both route objects. must call `next`.
  if (to.path === '/login') return next()
  const tokenStr = store.state.data.token
  if (!tokenStr) return next('/login')
  next()
})

父子组件传递

父子间向子组件传递数据

<template>
    <div>
        订单管理
        <Welcome :msg="total"></Welcome>
    </div>
</template>
<script>
import Welcome from '../../components/Welcome.vue'
import {reactive,ref} from 'vue'
export default {
    components:{
        Welcome
    },
    setup(props) {
        const total = ref('父组件传递的值')
        return {
            total
        }
    }
}
</script>
<style>
    
</style>

子组件接受父组件传递的数据

  • 运用vue中defineProps去接收父组件传递过来的数据
<template>
    <div class="topHanders">
        <span>{{msg}}</span>
    </div>
</template>

<script >
import { defineProps, reactive,ref } from 'vue'
  export default{
    props:['msg'],
    setup(props){
        
    }
  }
  
</script>

<style>
</style>

子组件向父组件传递数据

<template>
    <div class="topHanders">
        <span @click="toUp">{{msg}}</span>
    </div>
</template>

<script >
import { defineProps, reactive,ref,onMounted} from 'vue'
  export default{
    props:['msg'],
    setup(props,{emit}){
        const toUp = ()=>{
            emit('fn',123)
        }
        return{
          toUp
        }
    }
  }
  
</script>

<style scoped>
</style>

父组件接受子组件的数据

<template>
    <div>
        <Welcome :msg="total" @fn="func"></Welcome>
    </div>
</template>
<script>
import Welcome from '../../components/Welcome.vue'
import {reactive,ref} from 'vue'
export default {
    components:{
        Welcome
    },
    setup(props) {
        const total = ref('父组件传递的值')
        const func = (val)=>{
            console.log(val)
        }
        return {
            total,
            func
        }
    }
}
</script>
<style>
    
</style>