如何分离基本相同但使用不同状态的功能? Vue2/Vuex
How can I seperate functions which are basically the same but use different states? Vue2/Vuex
自从我意识到我违反了 DRY(不要重复自己)规则后,我遇到了一个问题。所以基本上我有 2 个模块(电影、电影院)和其中的一些方法,它们看起来相同但使用它们的模块状态。
示例:电影具有 'movies' 状态。电影院有 'cinemas' 个状态。
//cinemas.ts
@Mutation
deleteCinemaFromStore(id: string): void {
const cinemaIndex = this.cinemas.findIndex((item) => item.id === id);
if (cinemaIndex >= 0) {
const cinemasCopy = this.cinemas.map((obj) => {
return { ...obj };
});
cinemasCopy.splice(cinemaIndex, 1);
this.cinemas = cinemasCopy;
} else {
throw new Error("Provided id doesn't exist");
}
}
//movies.ts
@Mutation
deleteMovieFromStore(id: string): void {
const movieIndex = this.movies.findIndex((item) => item.id === id);
if (movieIndex >= 0) {
const moviesCopy = this.movies.map((obj) => {
return { ...obj };
});
moviesCopy.splice(movieIndex, 1);
this.movies = moviesCopy;
} else {
throw new Error("Provided id doesn't exist");
}
}
我的难题是:如果这些方法引用了 2 个不同的状态,我如何将它们分成 utils.ts?
定义另一个函数,将 id、state 和存储上下文 (this) 作为参数:
function delete(id:string,itemsName:string,self:any){
const itemIndex= self[itemsName].findIndex((item) => item.id === id);
if (itemIndex>= 0) {
const itemsCopy = self[itemsName].map((obj) => {
return { ...obj };
});
itemsCopy.splice(itemIndex, 1);
self[itemsName] = itemsCopy;
} else {
throw new Error("Provided id doesn't exist");
}
}
然后像这样使用它:
//cities.ts
@Mutation
deleteCityFromStore(id: string): void {
delete(id,'cities',this)
}
//countries.ts
@Mutation
deleteCountryFromStore(id: string): void {
delete(id,'countries',this)
}
自从我意识到我违反了 DRY(不要重复自己)规则后,我遇到了一个问题。所以基本上我有 2 个模块(电影、电影院)和其中的一些方法,它们看起来相同但使用它们的模块状态。 示例:电影具有 'movies' 状态。电影院有 'cinemas' 个状态。
//cinemas.ts
@Mutation
deleteCinemaFromStore(id: string): void {
const cinemaIndex = this.cinemas.findIndex((item) => item.id === id);
if (cinemaIndex >= 0) {
const cinemasCopy = this.cinemas.map((obj) => {
return { ...obj };
});
cinemasCopy.splice(cinemaIndex, 1);
this.cinemas = cinemasCopy;
} else {
throw new Error("Provided id doesn't exist");
}
}
//movies.ts
@Mutation
deleteMovieFromStore(id: string): void {
const movieIndex = this.movies.findIndex((item) => item.id === id);
if (movieIndex >= 0) {
const moviesCopy = this.movies.map((obj) => {
return { ...obj };
});
moviesCopy.splice(movieIndex, 1);
this.movies = moviesCopy;
} else {
throw new Error("Provided id doesn't exist");
}
}
我的难题是:如果这些方法引用了 2 个不同的状态,我如何将它们分成 utils.ts?
定义另一个函数,将 id、state 和存储上下文 (this) 作为参数:
function delete(id:string,itemsName:string,self:any){
const itemIndex= self[itemsName].findIndex((item) => item.id === id);
if (itemIndex>= 0) {
const itemsCopy = self[itemsName].map((obj) => {
return { ...obj };
});
itemsCopy.splice(itemIndex, 1);
self[itemsName] = itemsCopy;
} else {
throw new Error("Provided id doesn't exist");
}
}
然后像这样使用它:
//cities.ts
@Mutation
deleteCityFromStore(id: string): void {
delete(id,'cities',this)
}
//countries.ts
@Mutation
deleteCountryFromStore(id: string): void {
delete(id,'countries',this)
}