Вызов Mixin глобального метода из Vuex - PullRequest
0 голосов
/ 02 октября 2018

У меня есть такой миксин с методом запроса для вызова axios и обработки ошибок и т. Д.:

import Vue from 'vue'
import axios from 'axios';

Vue.mixin({
    methods: {
        request(url, datas) { 

        //Call axios and return premise
        [...]

         }
});

У меня есть такой магазин:

const actions = {
  selectEmployees: (store, keywords) => {

    this.request(`/users/list/search{/keywords}`).then(e => {
        store.commit('SELECT_EMPLOYEES', e.data)

    });
  }
}

let store = new Vuex.Store({
  state: state,
  mutations: mutations,
  getters: getters,
  actions: actions
})

Iхотел бы использовать запрос для вызова axios, но у меня есть эта ошибка:

Ошибка в смонтированном хуке: «Ошибка типа: не удается прочитать свойство« запрос »из неопределенного» Ошибка типа: невозможно прочитать свойство «запрос» из неопределенного

Спасибо за помощь.

Алекс

Ответы [ 2 ]

0 голосов
/ 22 августа 2019

Мое решение:

//GlobalMixin.js
const Mixin = {
  methods: {
    _secureHTML(str) {
      return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
    }
  }
}

export { Mixin } //use: import { Mixin } from 'GlobalMixin.js'

// - export it as a Vue Plugin
export default {
  install(Vue, options) {
    Vue.mixin(Mixin)
  }
}
0 голосов
/ 03 октября 2018

Смеси, как указано в документах , используются для компонентов.Vuex не сам компонент.Как я вижу, вы используете новые способы работы импорта / экспорта, просто сделайте ваше смешивание простыми функциями, которые экспортируются.Тогда в другом месте или присоедините их к Vue как mixin, или используйте это снаружи в магазине.Нечто подобное (полукод):

// mixin.js
export default function request() {}

// main.js
Vue.mixin({
  methods: {
    request: mixin.request // will provide this.request in each component
  }
}

// store.js
mixin.request() // will fire the method
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...