【发布时间】:2022-01-19 11:08:24
【问题描述】:
我必须关注 vue2/vuex 的情况;假设我有一个用户模块,用于存储从我的 api 获取的所有用户。
我使用这个模块来填充,例如,包含所有用户的下拉列表。
现在我也有一个用户页面,但是这个页面有过滤、分页用户等选项。这发生在服务器端,因此模块将使用新的(过滤的)用户列表进行更新。
我应该为两个用例(usersOptions 和 usersView)创建两个单独的模块吗?对我来说,创建两个用户存储实例似乎更合乎逻辑,但显然这对于 Vuex 是不可能的。遇到这种情况你会怎么处理?
这是我的用户模块的示例:
import UserRepository from '@/repositories/UserRepository';
export default {
namespaced: true,
state: {
loading: false,
users: [],
},
getters: {
isLoading(state) {
return state.loading;
},
data(state) {
return state.users;
},
options: (state) => (value = 'id', label = 'name') => state.users.map(
(user) => ({ value: user[value], label: user[label] }),
),
},
mutations: {
SET_LOADING(state, payload) {
state.loading = payload;
},
SET_DATA(state, payload) {
state.users = payload;
},
},
actions: {
fetch({ commit }) {
return new Promise((resolve, reject) => {
commit('SET_LOADING', true);
UserRepository.index({ limit: 0 })
.then((response) => {
const users = response.data.data;
commit('SET_DATA', users);
resolve(response);
})
.catch((error) => {
reject(error);
})
.finally(() => {
commit('SET_LOADING', false);
});
});
},
},
};
【问题讨论】:
-
很难说不知道your code。这实际上取决于您如何在商店中保存数据。你能和我们分享一下吗?
-
我已经用我的用户模块示例更新了我的帖子。
-
谢谢!您能告诉我们您可以用来请求完整或过滤/分页数据的不同网址吗?
-
对于我将使用
/api/users/search?limit=0的选项和填充视图我将使用/api/users/search?limit15&page=1并使用JSON 有效负载进行过滤或排序([{field: "name", direction: "desc"}]) -
好的,我添加了这个作为答案。我没有添加对过滤器/排序的支持,但我想你会明白的。
标签: javascript vue.js vuejs2 vuex