YuanJianDan 2022-09-12 12:41 采纳率: 0%
浏览 21

vue+pinia的使用问题

问题遇到的现象和发生背景

使用vue+pinia构建项目,定义userStore中的action事件login,调用不成功

问题相关代码,请勿粘贴截图
**store中的use.ts文件**
import { defineStore } from 'pinia'
type role = string[]
export const userStore = defineStore('user', {
  state: () => ({
    token: '',
    roles: <role>[]
  }),
  getters: {
    roles: (state) => state.roles,
    token: (state) => state.token
  },
  actions: {
    login() {
      console.log("login调用成功")
      this.token = '1234567890qwertyuiop'
    },
    getUserInfo() {
      this.roles = ['organzier', 'role', 'user', 'company']
    }
  }
})

**登录页login.vue**
<template>
  <div>
    <img alt="Vue logo" src="../../assets/logo.png" />
    <n-form
      ref="userFormRef"
      :model="userForm"
      :rules="userRules"
      label-placement="left"
      label-width="120px"
      :size="formSize"
    >
      <n-form-item label="username" prop="username">
        <n-input v-model:value="userForm.username" type="text" autocomplete="on" clearable />
      </n-form-item>
      <n-form-item label="Password" prop="password">
        <n-input v-model:value="userForm.password" type="password" autocomplete="off" clearable />
      </n-form-item>
      <div>
        <n-button type="primary" @click="submit">登录</n-button>
      </div>
    </n-form>
  </div>
</template>

<script setup lang="ts">
import { reactive, ref, Ref } from 'vue'
import { FormInst, FormItemRule } from 'naive-ui'
import { userStore } from '@/store/user'
import { useRouter } from 'vue-router'
// 定义路由放在此位置置顶
const router = useRouter()
**const userStoreData = userStore()**
const formSize:Ref<string> = ref('small')
const userFormRef = ref<FormInst | null>(null)
const userForm = reactive({
  username: undefined,
  password: undefined
})
const validateUsername = (rule: FormItemRule, value: string, callback: Function) => {
  if (!value) {
    callback(new Error('用户名不能为空'))
  } else if (value.length < 3) {
    callback(new Error('用户名不能少于3个字符'))
  } else {
    callback()
  }
}
const validatePassword = (rule: FormItemRule, value: string, callback: Function) => {
  if (!value) {
    callback(new Error('密码不能为空'))
  } else if (value.length < 6) {
    callback(new Error('密码不能少于3个字符'))
  } else {
    callback()
  }
}
const userRules = {
  username: [{ validator: validateUsername, trigger: 'blur' }],
  password: [{ validator: validatePassword, trigger: 'blur' }]
}
const submit = (e: MouseEvent) => {
  e.preventDefault()
  **userStoreData.login()**
  console.log(userStoreData)
 **此时打印userStoreData是proxy对象,但是调用login不成功,控制台没有打印出‘login调用成功’,不知道是为什么???**
  router.push('/')
  userFormRef.value?.validate((errors) => {
    if (!errors) {
      // 验证成功
    } else {
      console.log(errors)
      // 验证失败
    }

  })
}

</script>

<style scoped>
</style>
运行结果及报错内容

login方法调用不成功

我的解答思路和尝试过的方法

代码已比对pinia检验,但是看不出来问题

我想要达到的结果

控制台打印‘login调用成功’,login方法生效

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-12 13:03
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 9月12日

悬赏问题

  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题