Ответы пользователя по тегу Vue.js
  • Какой должен быть тип у inject во vue 3 при использовании typescript?

    olegbarabanov
    @olegbarabanov
    Программист, фрилансер (ИП)
    Для сохранения типа, при использовании provide/inject в виде ключа необходимо использовать InjectionKey<T>. Этот момент описан в документации Vue3 по применению inject/provide, а именно:
    When using TypeScript, the key can be a symbol casted as InjectionKey - a Vue provided utility type that extends Symbol, which can be used to sync the value type between provide() and inject().

    Т.е. в вашем случае, вы можете создать что-то подобие injection-keys.ts:
    import {InjectionKey} from 'vue';
    // InjectionKey<T>, где T представляет явно передаваемый тип,  который отслеживается при provide/inject
    export const localizeFilterKey: InjectionKey<(key: string) => string> = Symbol();

    А потом импортировать этот файл везде, где используется inject/provide с необходимыми ключами.
    В случае с применением provide:
    import localizeFilterKey from '@/injection-keys'
    ...
        app.provide(localizeFilterKey, localizeFilter)
    ...

    и соответственно в случае с применением inject:
    import localizeFilterKey from '@/injection-keys'
    ...
        const messagePlagin = inject(localizeFilterKey);
    ...


    Примеры сильно упрощенные, но надеюсь это сможет вам помочь.
    Ответ написан
    3 комментария
  • Как создать переменною доступною напрямую в index.html?

    olegbarabanov
    @olegbarabanov
    Программист, фрилансер (ИП)
    Если вы используете Vue-cli то просто добавьте в vue.config.js :
    module.exports = {
    ...
      configureWebpack: {
        plugins: [
          new webpack.DefinePlugin({
            VAR_NAME: VAR_VALUE,
          }),
        ],
      },
    ...
    }


    В шаблоне вы потом можете использовать как <%= VAR_NAME %>. В JS разумеется тоже как VAR_NAME.

    Если просто webpack - до просто добавьте секцию в plugins в webpack.config.js
    Ответ написан
    2 комментария