VUE3.0基础——(安装、定义数据、路由跳转)

安装

//查询当前vue cli版本
vue --version
//安装 vue cli 
//由于我这边是npm 还有yarn版本的 可以自行去官网查看安装教程 下面会放
npm install -g @vue/cli
//由于我之前的是2.4.5版本的 所以需要升级一下
npm update -g @vue/cli

查看vue -V 出现了 ‘vue’ 不是内部或外部命令,也不是可运行的程序

//使用 git bash 安装 然后在查看版本
npm install -g @vue/cli

效果如下

C:\Users\10507>vue -V
@vue/cli 4.5.15

官网地址
https://cli.vuejs.org/zh/guide/installation.html
vue3.0+ts 启动时报错
Cannot find module ‘fork-ts-checker-webpack-plugin-v5’
这个是解决方法
https://blog.csdn.net/HarryHY/article/details/121059338

定义数据 路由的跳转

<template lang="">
    <div class='header_box'>
        <div 
        v-for="(item) in HeaderList" 
        :key="item.id" @click="changePerson(item)" 
        :class="['headerdiv ',item.id==personSelected?'headerclick':'']"
        >
            {{item.name}}
        </div>
    </div>
</template>
<script lang= 'ts'>
import { reactive, toRefs} from "vue";
import { useRouter, onBeforeRouteUpdate } from "vue-router";
interface dataListReg {//头部接口规定
  HeaderList: any[];
  personSelected: number;
  changePerson: (item: any) => void;
}
export default {
  setup() {
    const router = useRouter();
    const dataList: dataListReg = reactive({
      HeaderList: [
        //头部的数据
        {
          id: 1,
          name: "首页",
          path: "/",
        },
        {
          id: 2,
          name: "个人中心",
          path: "/user",
        },
      ],
      personSelected: 1, //当前选中的页面

      changePerson: (item: any) => {
        //切换当前选中的页面
        dataList.personSelected = item.id; //切换头部高亮
        router.push({
          //跳转路由
          path: item.path,
        });
      },
    });
   
    const DataListRef = toRefs(dataList);
    return {
      ...DataListRef,
    };
  },
};
</script>

<style lang="less" scoped>
.header_box {
  display: flex;
  align-items: center;
  width: 80%;
  height: 50px;
  line-height: 50px;
  background-color: #0093e9;
  background-image: linear-gradient(160deg, #0093e9 0%, #80d0c7 100%);
  padding: 0 10%;
  .headerdiv {
    color: #fff;
    min-width: 100px;
    text-align: center;
    border-radius: 5px;
    margin-right: 30px;
    cursor: pointer;
  }
  .headerclick {
    background-color: #96c24e;
  }
}
</style>

获取当前路由 切换高亮

    const getRouter = reactive({
      getRouterChangePersonSelected: () => {//切换header高亮
        switch (router.currentRoute.value.path) {//当前路由地址
          case "/":
            dataList.personSelected = 1;
            break;
          case "/user":
            dataList.personSelected = 2;
            break;
        }
      },
    });
    getRouter.getRouterChangePersonSelected();

全部的TS代码

  setup() {
    const router = useRouter();
    const dataList: dataListReg = reactive({
      HeaderList: [
        //头部的数据
        {
          id: 1,
          name: "首页",
          path: "/",
        },
        {
          id: 2,
          name: "个人中心",
          path: "/user",
        },
      ],
      personSelected: 1, //当前选中的页面

      changePerson: (item: any) => {
        //切换当前选中的页面
        dataList.personSelected = item.id; //切换头部高亮
        router.push({
          //跳转路由
          path: item.path,
        });
      },
    });
    const getRouter = reactive({
      getRouterChangePersonSelected: () => {//切换header高亮
        switch (router.currentRoute.value.path) {//当前路由地址
          case "/":
            dataList.personSelected = 1;
            break;
          case "/user":
            dataList.personSelected = 2;
            break;
        }
      },
    });
    getRouter.getRouterChangePersonSelected();
    const DataListRef = toRefs(dataList);
    return {
      ...DataListRef,
    };
  },

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值