[FE] 求大佬解释登陆部分代码

2022-10-22 22:35:43 +08:00
 garyox64

源码: https://github.com/honghuangdc/soybean-admin/blob/main/src/views/system-view/login/components/PwdLogin/index.vue

<script setup lang="ts">
import { reactive, ref } from 'vue';
import type { FormInst, FormRules } from 'naive-ui';
import { EnumLoginModule } from '@/enum';
import { useAuthStore } from '@/store';
import { useRouterPush } from '@/composables';
import { formRules } from '@/utils';
import { OtherAccount } from './components';
const auth = useAuthStore();
const { login } = useAuthStore();
const { toLoginModule } = useRouterPush();
const formRef = ref<HTMLElement & FormInst>();
const model = reactive({
  userName: 'Soybean',
  password: 'soybean123'
});
const rules: FormRules = {
  password: formRules.pwd
};
const rememberMe = ref(false);
async function handleSubmit() {
  await formRef.value?.validate();
  const { userName, password } = model;
  login(userName, password);
}
function handleLoginOtherAccount(param: { userName: string; password: string }) {
  const { userName, password } = param;
  login(userName, password);
}
</script>

<style scoped></style>
Footer
© 2022 GitHub, Inc.
Footer navigation
Terms
Privacy

这段代码不是太懂,求大佬们帮解释下 我看登陆是调用 handleSubmithandleSubmitawait formRef,这个 formRef 的值ref<HTMLElement & FormInst>();是啥意思?

const { login } = useAuthStore();这个也不是很懂,我看也没有 import login 函数啊,这行代码的意思是 把 useAuthStore 的返回值 赋给 login 函数?

843 次点击
所在节点    Vue.js
3 条回复
renmu
2022-10-22 22:41:42 +08:00
formref 就是一个那个自定义 form 标签的 ref ,然后调用 validdate 方法。

@/store 里有个 useauthstore 函数,里面有登录的逻辑
vecZro
2022-10-22 22:48:00 +08:00
formRef 应该是获取表单组件的引用吧,提交表单的时候调用这个表单组件的 validate 方法进行表单数据的验证

const { login } = useAuthStore()就是解构
useAtuStore 函数执行完会返回一个对象,这个对象里面会包含这个 login 属性
const res = useAuthStore()
const login = res.login

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
garyox64
2022-10-22 23:02:35 +08:00
@renmu 哦哦,看到了 ref 了,感谢!
@vecZro 哦哦,懂了,看过解构,但是 login 这个 我只看到一个 async 的 login ,没理解它就是返回的一部分,感谢大佬指点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/889016

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX