当前位置: 首页 > news >正文

如何在 Vue 3 中使用 Vue Router 和 Vuex

在 Vue 3 中使用 Vue Router

1. 安装 Vue Router

在项目根目录下,通过 npm 或 yarn 安装 Vue Router 4(适用于 Vue 3):

npm install vue-router@4
# 或者使用 yarn
yarn add vue-router@4
2. 创建路由配置文件

src 目录下创建一个 router 文件夹,并在其中创建 index.js 文件,用于配置路由:

// src/router/index.js
import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue'; // 假设 Home 组件在 views 文件夹下
import About from '../views/About.vue'; // 假设 About 组件在 views 文件夹下const routes = [{path: '/',name: 'Home',component: Home},{path: '/about',name: 'About',component: About}
];const router = createRouter({history: createWebHistory(),routes
});export default router;
3. 在主应用中使用路由

main.js 中引入并使用路由:

// src/main.js
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';const app = createApp(App);
app.use(router);
app.mount('#app');
4. 在模板中使用路由

App.vue 中添加路由出口和导航链接:

<template><div><!-- 导航链接 --><router-link to="/">Home</router-link><router-link to="/about">About</router-link><!-- 路由出口,用于显示当前路由对应的组件 --><router-view></router-view></div>
</template><script setup>
// 这里可以添加其他逻辑
</script><style scoped>
/* 样式 */
</style>
5. 路由导航守卫(可选)

可以使用路由导航守卫来控制路由的访问权限等,例如在 router/index.js 中添加全局前置守卫:

// src/router/index.js
import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue';
import About from '../views/About.vue';const routes = [{path: '/',name: 'Home',component: Home},{path: '/about',name: 'About',component: About}
];const router = createRouter({history: createWebHistory(),routes
});// 全局前置守卫
router.beforeEach((to, from, next) => {// 可以在这里添加权限验证等逻辑console.log('Before each navigation');next();
});export default router;

在 Vue 3 中使用 Vuex(Vuex 4 适用于 Vue 3)

1. 安装 Vuex

在项目根目录下,通过 npm 或 yarn 安装 Vuex 4:

npm install vuex@4
# 或者使用 yarn
yarn add vuex@4
2. 创建 store

src 目录下创建一个 store 文件夹,并在其中创建 index.js 文件,用于创建和配置 store:

// src/store/index.js
import { createStore } from 'vuex';const store = createStore({state() {return {count: 0};},mutations: {increment(state) {state.count++;},decrement(state) {state.count--;}},actions: {incrementAsync(context) {setTimeout(() => {context.commit('increment');}, 1000);}},getters: {doubleCount(state) {return state.count * 2;}}
});export default store;
3. 在主应用中使用 store

main.js 中引入并使用 store:

// src/main.js
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';const app = createApp(App);
app.use(router);
app.use(store);
app.mount('#app');
4. 在组件中使用 store

在组件中可以通过不同方式使用 store 中的状态、mutations、actions 和 getters:

<template><div><p>Count: {{ count }}</p><p>Double Count: {{ doubleCount }}</p><button @click="increment">Increment</button><button @click="decrement">Decrement</button><button @click="incrementAsync">Increment Async</button></div>
</template><script setup>
import { useStore } from 'vuex';const store = useStore();const count = store.state.count;
const doubleCount = store.getters.doubleCount;const increment = () => {store.commit('increment');
};const decrement = () => {store.commit('decrement');
};const incrementAsync = () => {store.dispatch('incrementAsync');
};
</script><style scoped>
/* 样式 */
</style>

通过以上步骤,你就可以在 Vue 3 项目中成功使用 Vue Router 和 Vuex 了。在实际开发中,你可以根据项目需求进一步扩展和优化路由配置和 store 逻辑。

http://www.lryc.cn/news/538140.html

相关文章:

  • Fiori APP配置中的Semantic object 小bug
  • 【触想智能】工业显示器和普通显示器的区别以及工业显示器的主要应用领域分析
  • BPMN.js 与 DeepSeek 集成:打造个性化 Web 培训项目的秘诀
  • 第二月:学习 NumPy、Pandas 和 Matplotlib 是数据分析和科学计算的基础
  • 安全测试|SSRF请求伪造
  • Flink提交pyflink任务
  • 对称算法模式之CTR
  • Map 和 Set
  • STOMP协议
  • 手动埋点的demo
  • 大模型开发实战篇5:多模态--文生图模型API
  • 【大模型】DeepSeek 高级提示词技巧使用详解
  • 【第14章:神经符号集成与可解释AI—14.2 可解释AI技术:LIME、SHAP等的实现与应用案例】
  • Python中使用Minio实现图像或视频文件的存储
  • Kubernetes-master 组件
  • 人形机器人 - 仿生机器人核心技术与大小脑
  • OpenAI 快速入门
  • nginx 实战配置
  • WebMvcConfigurer 介绍
  • java05(类、泛型、JVM、线程)---java八股
  • Python+appium实现自动化测试
  • Unity中如何判断URL是否为RTSP或RTMP流
  • 基于角色访问控制的UML 表示02
  • 【函数题】6-10 二分查找
  • 关于conda换镜像源,pip换源
  • DeepSeek与ChatGPT的全面对比
  • Spring AI发布!让Java紧跟AI赛道!
  • 基于CT107D单片机综合训练平台的秒表设计
  • opensuse [Linux] 系统挂在新的机械硬盘
  • 时间序列分析(四)——差分运算、延迟算子、AR(p)模型