Как в vuex получить метод для вызова метода действия? - PullRequest
0 голосов
/ 26 мая 2020

В приложении @ vue / cli 4.0.5 / vuex 3 с чтением данных из Laravel Backend API Я сохраняю некоторые параметры в таблице настроек базы данных и хочу прочитать их один раз и сохранить в хранилище vuex. Я проверяю, пусто ли значение site_name. Я
вызываю действие retrieveSiteName и получаю ошибку:

 Error in render: "TypeError: Cannot read property 'dispatch' of undefined"

в моем src / store / index. js:

export default new Vuex.Store({
    state: {// store data
        status: '',
        token: localStorage.getItem('token') || '',
        user: null,
        site_name: '', // I need to read this value once
        ...
    }, // state: { // store data

    getters: {
        ...


        site_name(state) {
            if (state.site_name.length > 0) {
                return state.site_name
            }
            let site_name = localStorage.getItem('site_name')
            if (site_name != null ) {
                return site_name
            }
            // this.actions.retrieveSiteName(state)

            // state.this.dispatch('retrieveSiteName')
            this.dispatch('retrieveSiteName') // Error Here!

            return ''
        }, // site_name(state) {
        ...

    actions: { // async methods
        retrieveSiteName(context) {
            console.log('retrieveSiteName::')
            let apiUrl = process.env.VUE_APP_API_URL
            axios.post(apiUrl + '/app_settings', 'site_name')
                .then((response) => {
                    console.log('retrieveSiteName response::')
                    console.log(response)

                    context.commit('refreshSiteName', response.data.site_name)

                })
                .catch((error) => {
                    console.error(error)
                })
        }, // retrieveSiteName(context) {

Что такое допустимый способ вызова retrieveSiteName из метода get name?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...