BonBonSlick
@BonBonSlick
Junior Web Developer Trainee

Vue + Typescript dynamic action/getter namespace?

@Template
@Component<ComponentClass>(
    {
        components: {},
        mixins:     [],
        directives: {},
    },
)
export default class ComponentClass extends Vue
    @Prop({ type: String, required: true })
    dynamicNamespaceProp!: string[];
    
    @namespace(dynamicNamespaceProp).Getter
    someGetter!: { [key: string]: string };

    get dynamicNamespace() : string {
        return  this.dynamicNamespaceProp;
    }
    mounted(): void {
    }

};


Cannot find name 'dynamicNamespaceProp'.

В обычном Ву можно реализовать динамические геттеры и екшены.
  • Вопрос задан
  • 39 просмотров
Решения вопроса 1
BonBonSlick
@BonBonSlick Автор вопроса
Junior Web Developer Trainee
@Prop({type: String, required: true})
    namespace!: string;

    get currentStep(): any {
        return store.getters[`${this.namespace}/currentStep`];
    }


vs

computed: {
        ...mapState(`${LISTS}/${PUBLIC_NOT_SECURED}`, {
            // dynamic getters
            // DO NOT MODIFY "RVALUE"!
             list(state, getters) {
                return getters[`${this.namespace}/list`];
             },

setFieldValueByFieldNameFromEvent ($event: InputEvent): Promise<object>{
        return  store.dispatch(`${this.namespace}/setFieldValueByFieldNameFromEvent`, $event);
    }

Скажу сразу, решение, крайне костыльное как и весь vue 2 + ts, хотя бы потому что идет импорт всего хранилища в компоненте что может замедлить приложение на 5+ сек при маунте компонента на старых мобилах. Но это решает задачу, перепробывал кучу вариантов избегая этого, увы.
Второй вариант без ТС там идет мап конкретного геттера.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы