面试题答案
一键面试- 安装Pinia:
在Vue项目中,首先需要安装Pinia。如果使用npm,运行以下命令:
如果使用yarn:npm install pinia
yarn add pinia
- 在Vue项目中引入Pinia:
在
main.js
(Vue 3项目)中引入并使用Pinia:import { createApp } from 'vue' import { createPinia } from 'pinia' import App from './App.vue' const app = createApp(App) const pinia = createPinia() app.use(pinia) app.mount('#app')
- 创建状态管理模块:
在
src/store
目录下(通常约定放在此目录,可自行调整)创建一个文件,例如userStore.js
。
上述代码使用import { defineStore } from 'pinia' export const useUserStore = defineStore('user', { state: () => ({ isLoggedIn: false }), actions: { login() { this.isLoggedIn = true }, logout() { this.isLoggedIn = false } } })
defineStore
定义了一个名为user
的store。state
函数返回初始状态,这里有一个isLoggedIn
属性表示用户登录状态。actions
定义了两个方法login
和logout
,用于修改isLoggedIn
的值。 - 在组件中使用状态管理模块:
假设在一个
Home.vue
组件中使用:
在组件的<template> <div> <button v-if="!userStore.isLoggedIn" @click="userStore.login">登录</button> <button v-if="userStore.isLoggedIn" @click="userStore.logout">登出</button> <p v-if="userStore.isLoggedIn">您已登录</p> </div> </template> <script setup> import { useUserStore } from '../store/userStore.js' const userStore = useUserStore() </script>
<script setup>
中,引入useUserStore
并调用它,获取store实例userStore
,然后在模板中根据userStore.isLoggedIn
的值来显示不同的按钮和提示信息,并通过userStore.login
和userStore.logout
方法来修改登录状态。