vuexok icon indicating copy to clipboard operation
vuexok copied to clipboard

Будут ли добавлены ...map операторы?

Open Giorno-Giovana opened this issue 3 years ago • 7 comments

Библиотека действительно удобная, только не хватает одной вещи для счастья - map функций, вроде mapState, mapGetters

Giorno-Giovana avatar Oct 12 '21 17:10 Giorno-Giovana

Вот идейка

export function mapGetter<T, K extends (keyof T)[]>(module: T, getters: K): GettersObject<T, K> {
  return getters.reduce((acc, curr) => {
    acc[curr] = () => module[curr];
    return acc;
  }, {} as any);
}

type GetArrayKeys<T extends unknown[], P = T[number]> = P extends string ? P : never;

type GettersObject<T, K extends (keyof T)[], P extends string = GetArrayKeys<K>> = {
  [X in P]: X extends keyof T ? () => T[X] : never;
};

Giorno-Giovana avatar Oct 14 '21 14:10 Giorno-Giovana

В коде выглядит вот так

export const RoflModule = createModule('roflModule', {
  state: () => ({
    counter: '',
  }),
  getters: {
    x2: () => 1312312,
    x4: state => state.counter + '4',
    x8: state => state.counter + '8',
  },
});
    ...mapGetter(RoflModule.getters, ['x2', 'x4']),

image image

Giorno-Giovana avatar Oct 14 '21 15:10 Giorno-Giovana

@spb-web ?

Giorno-Giovana avatar Oct 18 '21 17:10 Giorno-Giovana

Привет. Спасибо за идею. Рассмотрю в ближайшее время и отпишусь

spb-web avatar Oct 19 '21 12:10 spb-web

@spb-web Вообще лучше будет просто модуль весь скармливать, а не module.getters

Giorno-Giovana avatar Oct 21 '21 12:10 Giorno-Giovana

@Giorno-Giovana Сейчас нашел немного времени чтобы добавить хелперы.
Можешь проверить пр?

spb-web avatar Oct 25 '21 17:10 spb-web

@spb-web Есть какие-то новости?

Giorno-Giovana avatar Dec 22 '21 14:12 Giorno-Giovana