Vuex 获取login用户名到main

1.安装    npm install vuex --save

2.新建store   index.js

3.import Vuex from ’vuex‘

4.

// 全局对象,用于保存所有组件的公共数据,类似 数据库

const state ={

    user:{

        name:''

    }

};


 

// 监听state对象的值的最新状态(计算属性)  取值

const getters={

    getUser(state){

        return state.user;

    }

};

// 唯一一个可以修改state值的方法(同步执行)

const mutations={

    updateUser(state,user){

        state.user = user;

    }

};

// 异步执行mutations方法   context上下文的意思  指上面的mutations  

const actions={

    asyncUpdateUser(context,user){

        context.commit("updateUser",user);

    }

};

//配置完  暴露出去

export default new Vuex.Store({

        state,

        getters,

        mutations,

        actions,

});

5.login

表单验证 用户名 存储对象

this.$store.dispatch("asyncUpdateUser",{name:this.form.name});

6.main导入

{{$store.getters.getUser.name}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的示例代码,其中包含了您提到的要求: 1. 在终端中使用 Vue CLI 创建一个新的 Vue 项目,并安装 Element UI、Vue Router、Vuex: ``` vue create my-project cd my-project npm install element-ui vue-router vuex ``` 2. 在 `src` 目录下创建 `views` 目录,并在其中创建 `Login.vue` 和 `Main.vue` 两个组件。`Login.vue` 组件包含一个登录表单,`Main.vue` 组件包含一个欢迎信息。 3. 在 `router` 目录下创建 `index.js` 文件,并配置路由,将 `/login` 路径指向 `Login.vue` 组件,将 `/main` 路径指向 `Main.vue` 组件。 ```javascript import Vue from 'vue' import Router from 'vue-router' import Login from '@/views/Login.vue' import Main from '@/views/Main.vue' Vue.use(Router) export default new Router({ routes: [ { path: '/login', name: 'login', component: Login }, { path: '/main', name: 'main', component: Main }, { path: '*', redirect: '/login' } ] }) ``` 4. 在 `store` 目录下创建 `index.js` 文件,并配置 Vuex,定义 `state`、`getters`、`mutations` 和 `actions`,用来存储和修改用户名和密码。 ```javascript import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { username: '', password: '' }, getters: { getUsername: state => state.username, getPassword: state => state.password }, mutations: { setUsername: (state, username) => { state.username = username }, setPassword: (state, password) => { state.password = password } }, actions: { setUsername: ({commit}, username) => { commit('setUsername', username) }, setPassword: ({commit}, password) => { commit('setPassword', password) } } }) ``` 5. 在 `main.js` 中导入 Element UI、Vue Router、Vuex,并创建 Vue 实例,将其挂载到 `#app` 元素上。 ```javascript import Vue from 'vue' import App from './App.vue' import router from './router' import store from './store' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) Vue.config.productionTip = false new Vue({ router, store, render: h => h(App) }).$mount('#app') ``` 6. 在 `Login.vue` 组件中,通过 `v-model` 双向绑定用户名和密码,通过 `this.$store.dispatch` 触发 Vuex 的 `setUsername` 和 `setPassword` 方法,将用户名和密码存储到 Vuex 中。同时,在点击登录按钮时,通过 `$router.push` 方法跳转到 `/main` 路径。 ```html <template> <div class="login"> <h1>登录</h1> <el-form> <el-form-item label="用户名"> <el-input v-model="username" /> </el-form-item> <el-form-item label="密码"> <el-input type="password" v-model="password" /> </el-form-item> <el-form-item> <el-button type="primary" @click="login">登录</el-button> </el-form-item> </el-form> </div> </template> <script> export default { data() { return { username: '', password: '' } }, methods: { login() { this.$store.dispatch('setUsername', this.username) this.$store.dispatch('setPassword', this.password) this.$router.push('/main') } } } </script> ``` 7. 在 `Main.vue` 组件中,通过 `$store.getters` 获取用户名和密码,并显示欢迎信息。 ```html <template> <div class="main"> <h1>欢迎您,{{ username }}</h1> </div> </template> <script> export default { computed: { username() { return this.$store.getters.getUsername }, password() { return this.$store.getters.getPassword } } } </script> ``` 8. 在 `router/index.js` 中使用全局钩子函数 `beforeEach`,判断用户是否已经登录。如果已经登录,则允许访问 `/main` 路径,否则跳转到 `/login` 路径。 ```javascript router.beforeEach((to, from, next) => { const isLoggedIn = store.getters.getUsername !== '' && store.getters.getPassword !== '' if (to.path === '/login' || isLoggedIn) { next() } else { next('/login') } }) ``` 这样,一个包含 Element UI、Vue Router、Vuex 的登录界面就完成了。用户输入用户名和密码后,点击登录按钮,将会跳转到主界面,并显示欢迎信息。如果用户未登录,则无法访问主界面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值