Um pacote de caso de login para aprender Pinia

Um estudo de caso de login Pinia

Pinia é uma biblioteca de gerenciamento de estado muito simples e intuitiva que pode ser usada com Vue.js. Isso nos ajuda a gerenciar melhor o estado em aplicativos Vue.js e fornece uma maneira fácil de organizar e separar a lógica de negócios.

A seguir está um caso de login simples que demonstra como usar o Pinia para gerenciar o status de login do usuário:

  1. Primeiro, precisamos instalar o Pinia. No diretório raiz do seu projeto Vue, execute o seguinte comando para instalá-lo:
`npm install pinia`
  1. Importe e use Pinia em main.js:
import {
    
     createPinia } from 'pinia'
import {
    
     createApp } from 'vue'

const app = createApp(App)
const pinia = createPinia()

app.use(pinia)
app.mount('#app')
  1. Crie um authStore.jsarquivo para definir nossa Store para gerenciar o status de login:
import {
    
     defineStore } from 'pinia'

export const useAuthStore = defineStore('auth', {
    
    
  state: () => ({
    
    
    user: null,
    isLoggedIn: false,
  }),

  actions: {
    
    
    login(username, password) {
    
    
      // 模拟登录请求
      return new Promise((resolve, reject) => {
    
    
        setTimeout(() => {
    
    
          if (username === 'admin' && password === 'admin123') {
    
    
            this.user = {
    
     username }
            this.isLoggedIn = true
            resolve()
          } else {
    
    
            reject('Invalid credentials')
          }
        }, 1000)
      })
    },
    logout() {
    
    
      this.user = null
      this.isLoggedIn = false
    },
  },
})
  1. Usado em nosso componente Vue useAuthStore:

<template>
  <div>
    <h1 v-if="auth.isLoggedIn">Welcome, {
    
    {
    
     auth.user.username }}!</h1>

    <form v-if="!auth.isLoggedIn" @submit.prevent="login">
      <label for="username">Username:</label>
      <input type="text" id="username" v-model="username" />

      <label for="password">Password:</label>
      <input type="password" id="password" v-model="password" />

      <button type="submit">Login</button>
    </form>

    <button v-if="auth.isLoggedIn" @click="logout">Logout</button>
  </div>
</template>

<script>
import {
    
     useAuthStore } from './authStore'

export default {
    
    
  setup() {
    
    
    const auth = useAuthStore()

    const username = ref('')
    const password = ref('')

    const login = () => {
    
    
      auth.login(username.value, password.value)
        .then(() => {
    
    
          // 登录成功
        })
        .catch((error) => {
    
    
          console.error(error)
        })
    }

    const logout = () => {
    
    
      auth.logout()
    }

    return {
    
    
      auth,
      username,
      password,
      login,
      logout,
    }
  },
}
</script>

Agora, quando o usuário fornece o nome de usuário e a senha corretos no formulário de login, ele define o usuário como conectado, exibe uma mensagem de boas-vindas ao usuário e um botão de logout. Quando o usuário clica no botão de logout, ele é definido como não conectado.

Este é apenas um exemplo simples que você pode ampliar e personalizar de acordo com suas necessidades. Pinia oferece mais funções e usos, como persistência de estado, divisão de módulo, etc. Você pode navegar na documentação oficial do Pinia para saber mais.

Acho que você gosta

Origin blog.csdn.net/qzmlyshao/article/details/132613487
Recomendado
Clasificación