Возможно, у кого-то была похожая ситуация, и она может помочь с этим:
Очень упрощенный c просмотр:
- У меня есть модуль Vuex, который я использую с двумя разными store
- Этот модуль использует функцию «нормализатора», которая отображает данные из API в формат, используемый компонентами, использующими данные
- Компоненты в двух хранилищах нуждаются в данных в несколько разных форматы
- Моя текущая идея состоит в том, чтобы иметь две разные функции «нормализатора», которые имеют один и тот же «интерфейс», но дают немного разные результаты, и «внедрить» их в качестве зависимости в модуль перед подключением его к хранилищу:
Существующий код - «фиксированная» функция нормализатора (простой старый модуль Vuex):
// module.js
import { normalize } from './utils';
const actions = {
getData({ commit }) {
MyApi.getData().then((data) => {
commit('setData', data.map(normalize));
});
},
};
// ...
export default {
actions,
// ...
}
// my-store.js
import MyModule from './my-module';
export default new Vuex.Store({
modules: {
'my-module': MyModule,
},
// ...
});
Новый код, который может принимать различные функции:
// module.js
export default (inject) => {
const { normalize } = inject;
const actions = {
getData({ commit }) {
MyApi.getData().then((data) => {
commit('setData', data.map(normalize));
});
},
};
//...
return {
actions,
// ...
};
}
// store-type-1.js
import getMyModule from './my-module';
import normalizerType1 from './normalizer-type-1';
export default new Vuex.Store({
modules: {
'my-module': getMyModule({ normalize: normalizerType1 }),
},
// ...
})
Дело в том, что в этой реализации что-то напоминает больной большой палец, и я почти уверен, что есть более разумные способы сделать это, я Я просто недостаточно умен, чтобы думать о них.
Я могу предоставить более подробную информацию о том, что должна делать эта функция "нормализатора", возможно, я лаю не на том дереве.
Какой отраслевой стандарт для такого рода вещей?
Спасибо!