Laravel + Vue.js-如何拥有全局变量?

马克西斯

我有一个使用Laravel和Vue.js的项目。我想不分开它们不是最好的主意,但是我们可以从错误中学习;)这是它的工作原理:

我一直在努力放置全局变量,例如“当前用户”。现在,每次需要时,我都会通过axios调用/ currentuser,或者将它放在道具中,但是这让我发疯了……我如何才能使其全局化?我想知道Vuex是否可以在我的项目中使用,因为一切都从Laravel调用,路线也是如此...

我已经在app.js中尝试了几件事(这里有2件事混合在一起):

var curruser=null;

axios.get('/currmember').then(
    response => {
        curruser=response.data;
    }
);

Vue.mixin({
    methods: {

    },
    data: function() {
        return {
          myvaiable: '', //this doesn't work eather
          get currentUser() {
            if(curruser==null){
                axios.get('/currmember').then(
                    response => {
                        curruser=response.data;
                        return curruser;
                    }
                );
            }
            return curruser;
          }
        }
      }
});}

在TestComponent.vue中

<template>
  <div>
    {{currentUser}}
    {{myvariable}} <!-- none of them display anything -->
  </div>
</template>

这是工作方式(非常简化):

app.js

import Vue from 'vue';
window.Vue = require('vue');

var App = Vue.component('app', require('./App.vue').default, {
    name: 'app'
}); 
var shol = Vue.component('test', require('./components/TestComponent.vue').default); 

let lang=localStorage.Lang!=null?localStorage.Lang:'fr';// = document.documentElement.lang.substr(0, 2); 
init();


function init(){

    const app = new Vue({
        el: '#app',
        i18n,
        components:{test
       }
    });

    var curruser=null;

    axios.get('/currmember').then(
        response => {
            curruser=response.data;
        }
    );


    Vue.mixin({
        methods: {

        },
        data: function() {
            return {
                currentUser: 'blabla',
              get currentUser2() {
                if(curruser==null){
                    axios.get('/currmember').then(
                        response => {
                            curruser=response.data;
                            console.log(curruser);
                            return curruser;
                        }
                    );
                }
                return curruser;
              }
            }
          }
    });}

test.blade.php

@extends('template')
@section('pageTitle', 'test' )
@section('contenu')
    <div >
        <test></test>
    </div>

@endsection


web.php
Route::get('/test', function () {
    return view('test');
});
哈菲兹·迪万达里(Hafez Divandari)

您可以使用vuex访问当前经过身份验证的用户:

app.js

import Vue from 'vue';
import store from './store';

const app = new Vue({
    el: '#app',
    store,
    i18n,
    components:{ test },
    created() {
        store.dispatch('getUser');
    }
});

store.js

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex);

export default new Vuex.Store({
    state: {
        user: {},
    },
    getters: {
        user: state => state.user,
    },
    mutations: {
        setUser(state, user) {
            state.user = user;
        },
    },
    actions: {
        getUser({ commit }) {
            return new Promise((resolve, reject) => {
                axios.get('/currmember')
                    .then(result => {
                        commit('setUser', result.data);
                        resolve();
                    })
                    .catch(error => {
                        reject(error.response && error.response.data.message || 'Error.');
                    });
            });
        },
    }
})

test组件:

<template>
  <div>
    {{ currentUser }}
  </div>
</template>

<script>
export default {
    computed: {
        currentUser() {
           return this.$store.state.user;
        }
    }
};
</script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JS:如何防止访问全局变量呢?

来自分类Dev

laravel中的全局变量

来自分类Dev

如何从Require.js导出全局变量?

来自分类Dev

Laravel中的Vue.js错误

来自分类Dev

Laravel Vue.js未定义变量异常

来自分类Dev

Laravel和vue.js值数组

来自分类Dev

如何从Laravel将路由参数传递给Vue.js

来自分类Dev

在Vue.js中声明全局变量的最佳方法是什么?

来自分类Dev

如何创建删除表中所有内容的函数?Vue.js-Laravel

来自分类Dev

Laravel和Vue.js循环功能

来自分类Dev

如何在Vue.js中从laravel设置错误

来自分类Dev

如何防止Laravel全局变量中的循环

来自分类Dev

如何使用Laravel和Vue js搜索数据?

来自分类Dev

在app.js laravel上创建全局方法vue

来自分类Dev

Laravel Vue Non SPA-如何为其vue js组件的每个页面拆分文件?

来自分类Dev

Laravel,Vue.js插入数组

来自分类Dev

如何在Vue 3中使用Vue.prototype或全局变量?

来自分类Dev

如何避免在js文件中重置全局变量

来自分类Dev

如何使用Angular Js声明全局变量?

来自分类Dev

vue.js中的应用程序范围的全局变量

来自分类Dev

Laravel 如何获取 vue.js 发出的 GET 请求?

来自分类Dev

laravel 5 vue.js csrf 令牌

来自分类Dev

Laravel 和 Vue js 身份验证

来自分类Dev

意外的令牌导入:带有 Laravel 的 vue js

来自分类Dev

如何将全局变量传递给所有组件 - react js

来自分类Dev

带有 vue js 和 laravel 的数据表

来自分类Dev

如何使用 Laravel/Vue JS 修复数组输入值

来自分类Dev

带有 Vue.js SPA 的 Laravel Passport

来自分类Dev

在 Inertia.js Vue 文件中访问 Laravel 的 .env 变量