用vue3 写出一个完整的用户登录界面

首先,安装必要的依赖包。

npm install vue@next vue-router vuex

然后,创建一个名为App.vue的根组件。

<template>
  <div>
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  name: 'App',
}
</script>

接下来,创建一个名为router.js的路由文件。

import { createRouter, createWebHistory } from 'vue-router'
import Home from './components/Home.vue'
import Login from './components/Login.vue'

const routes = [
  { path: '/', component: Home },
  { path: '/login', component: Login },
]

const router = createRouter({
  history: createWebHistory(),
  routes,
})

export default router

然后,创建一个名为store.js的Vuex存储文件。

import { createStore } from 'vuex'

const store = createStore({
  state() {
    return {
      isLoggedIn: false,
    }
  },
  mutations: {
    login(state) {
      state.isLoggedIn = true
    },
    logout(state) {
      state.isLoggedIn = false
    },
  },
})

export default store

接下来,创建一个名为Home.vue的组件,作为登录后的主页。

<template>
  <div>
    <h1>Welcome to the Home page!</h1>
    <button @click="logout">Logout</button>
  </div>
</template>

<script>
import { mapMutations } from 'vuex'

export default {
  name: 'Home',
  methods: {
    ...mapMutations(['logout']),
  },
}
</script>

然后,创建一个名为Login.vue的组件,用于用户登录。

<template>
  <div>
    <h1>Login</h1>
    <form @submit.prevent="login">
      <input type="text" v-model="username" placeholder="Username" required>
      <input type="password" v-model="password" placeholder="Password" required>
      <button type="submit">Login</button>
    </form>
  </div>
</template>

<script>
import { mapMutations } from 'vuex'

export default {
  name: 'Login',
  data() {
    return {
      username: '',
      password: '',
    }
  },
  methods: {
    ...mapMutations(['login']),
    login() {
      // 实际的登录逻辑,例如,发送登录请求到服务器
      // 如果登录成功,调用 `this.login()` 来更新 `isLoggedIn` 状态
      this.login()
      this.$router.push('/') // 登录成功后跳转到主页
    },
  },
}
</script>

最后,在入口文件main.js中,初始化Vue应用程序。

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

createApp(App)
  .use(router)
  .use(store)
  .mount('#app')

现在,你可以运行应用程序并访问http://localhost:8080/login来查看用户登录界面。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林修慎独

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值