我有一个 ProjectPage.vue 页面,它在 v-data-table 中显示问题。项目从侧边栏中的服务器 API 调用中检索并显示在那里。选择一个项目后,我想使用该项目的 id 从服务器获取其问题。是否可以使用 Vuex 来做到这一点。
使用 Vuex 是否可以让每个项目都可以使用相同的 .js 文件来检索其问题,因为可能有任意数量的项目。
我想做的是从 VerticalNavMenu.vue 将 id 和项目作为 props 传递给 ProjectPage,这样我就可以将 id 作为参数传递给 ProjectPage 内的 mapAction 以检索其问题。
我现在做的方法不起作用。当我打开项目的表格时,该表格没有可用数据
我希望 Peoject_Pages.js 有助于理解我的问题。
VerticalNavMenu.vue(相关模板行为38 -> 48)
$emit('update:is-drawer-open', val)" > ITrackerHub
{{ icons.mdiAccountGroup }} {{ project.title }}
NavBar.js
import axios from 'axios'
const state = {
Projects: [],
}
const getters = {
ProjectList: (state) => state.Projects
}
const actions = {
async fetchProjects({ commit }) {
const response = await axios.get('https://fadiserver.herokuapp.com/api/v1/my-projects/')
commit('setProjects', response.data)
}
}
const mutations = {
setProjects: (state, Projects) => (state.Projects = Projects)
}
export default {
state,
getters,
actions,
mutations
}
ProjectPage.vue
{{ project.title }}
{{ item.tab }} mdi-plus-thick Add IssueAdd Issue
mdi-content-save-check-outline Save
Project_Page.js
import axios from 'axios'
const state = {
issuesList: [],
}
const getters = {
Project_Issues: (state) => state.issuesList
}
const actions = {
async fetchProjectIssueList({ commit }, {projectid}) {
const response = await axios.get('https://fadiserver.herokuapp.com/api/v1/my-issues-titles/?projectid=' + projectid)
commit('setProjectIssues', response.data)
},
}
const mutations = {
setProjectIssues: (state, issuesList) => (state.issuesList = issuesList)
}
export default {
state,
getters,
actions,
mutations
} Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
有两种方法可以解决您的问题。
fetchProjectIssueList方法中传递一个带有键projectid的对象fetchProjectIssueList方法中解构该对象this.fetchProjectIssueList({ projectid: this.id }) ... async fetchProjectIssueList({ commit }, {projectid}) { ... }或
this.fetchProjectIssueList(this.id) ... async fetchProjectIssueList({ commit }, projectid) { ... }