Можно ли вызывать локальные функции из импортированных в Vuex? - PullRequest
0 голосов
/ 31 марта 2020

У меня есть простой файл с именем _mixin.js, который состоит из:

const mutations = {
    _set(state, data) {       
        for (let key in data) {
            if (key in state) {
                state[key] = data[key];
            }
        }
    },

    _reset(state) {
        const s = initialState();

        Object.keys(s).forEach(key => {
            state[key] = s[key];
        });
    }
};

export default {
    mutations
};

Что я пытаюсь сделать, это разделить эти два метода между всеми существующими модулями, как это:

import _MIXINS from 'store/modules/_mixins';

function initialState() {
    return {
        id: null,
        email: null,
        password: null,
        name: null,
    };
}

const state = initialState();


const mutations = {
    ..._MIXINS.mutations,

    setId(state, id) {
        state.id = id;
    }
};

Проблема в том, что браузер говорит, что не может найти функцию initialState, поскольку ее нет в том же файле.

1 Ответ

0 голосов
/ 31 марта 2020

Просто сделайте так:

// sharedLogi c. js

export function initialState () {
    // your logic
}

// store module

import { initialState } from '<pathTo sharedLogic.js>'
const state = initialState();

// mixin module

import { initialState } from '<pathTo sharedLogic.js>'
const mutations = {
   ...
    _reset(state) {
        const s = initialState();

        Object.keys(s).forEach(key => {
            state[key] = s[key];
        });
    }
};
...