You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js中$state的最佳使用方式是什么?AngularJS迁移适配示例咨询

Vue路由跳转传参及状态使用方案

与AngularJS $state.go对等的实现

你之前的代码属于路由跳转携带参数的场景,Vue生态对应使用官方路由工具Vue Router实现,写法如下:

第一步:路由配置

首先在路由配置文件中声明homework路由:

// router/index.js 路由配置示例
const routes = [
  // 其他路由配置
  {
    path: '/homework',
    name: 'homework', // 路由名称,跳转时作为唯一标识
    component: () => import('@/views/Homework.vue')
  }
]

第二步:跳转传参

分两种常用语法:

  • 选项式API(Vue2/Vue3都支持)写法,和你原代码逻辑完全对齐:
// 触发跳转的组件内逻辑
this.$router.push({
  name: 'homework',
  params: { homework: homework.homework }
})
  • Vue3组合式API <script setup> 写法:
import { useRouter } from 'vue-router'
const router = useRouter()

router.push({
  name: 'homework',
  params: { homework: homework.homework }
})

第三步:目标页接收参数

  • 选项式API接收:
// Homework.vue 组件内
const homeworkData = this.$route.params.homework
  • 组合式API接收:
import { useRoute } from 'vue-router'
const route = useRoute()

const homeworkData = route.params.homework

注意:如果需要刷新页面后参数不丢失,可以把params替换为query,参数会自动拼接在URL上,接收方式对应调整为$route.query.homework即可。


初学者适用的Vue状态管理方案

如果你需要跨多组件共享状态(不止是两个路由页传参),优先选择官方推荐的Pinia作为状态管理工具,学习成本低,符合Vue的设计逻辑,基础用法如下:

1. 定义状态仓库

// stores/homework.js
import { defineStore } from 'pinia'

export const useHomeworkStore = defineStore('homework', {
  state: () => ({
    currentHomework: null
  }),
  actions: {
    setCurrentHomework(data) {
      this.currentHomework = data
    }
  }
})

2. 存状态+跳转

// 触发跳转的组件内
import { useHomeworkStore } from '@/stores/homework'
import { useRouter } from 'vue-router'

const homeworkStore = useHomeworkStore()
const router = useRouter()

// 先存状态
homeworkStore.setCurrentHomework(homework.homework)
// 跳转无需携带参数
router.push({ name: 'homework' })

3. 目标页取状态

// Homework.vue 组件内
import { useHomeworkStore } from '@/stores/homework'

const homeworkStore = useHomeworkStore()
const currentHomework = homeworkStore.currentHomework

内容的提问来源于stack exchange,提问作者JohnW2Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:57:04