hooks.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import {login} from '@apis';
  2. import {useMutation} from '@tanstack/react-query';
  3. import {useEffect, useState} from 'react';
  4. import {showToast} from '@tarojs/taro';
  5. import {useStore} from 'zustand';
  6. import {userStore} from '@stores';
  7. export function useFields(visible) {
  8. const [files, setFields] = useState({userName: '', password: ''});
  9. function onChange(key) {
  10. return function (val) {
  11. setFields(prev => ({...prev, [key]: val}));
  12. };
  13. }
  14. useEffect(
  15. function () {
  16. visible && setFields({userName: '', password: ''});
  17. },
  18. [visible],
  19. );
  20. return [files, onChange];
  21. }
  22. export function useLogin(userName, password, {onClose}) {
  23. const setUser = useStore(userStore, state => state.init);
  24. const {isLoading, mutate} = useMutation({
  25. mutationFn: login,
  26. onSuccess(data) {
  27. if (data.code === '200') {
  28. const userData = {
  29. userName: data.data.userName,
  30. power: data.data.power,
  31. };
  32. onClose();
  33. showToast({title: '登录成功', icon: 'success'});
  34. setUser(userData);
  35. }
  36. },
  37. });
  38. function onClick() {
  39. if (!userName) {
  40. return showToast({title: '请输入用户名', mask: true, icon: 'error'});
  41. }
  42. if (!password) {
  43. return showToast({title: '请输入密码', mask: true, icon: 'error'});
  44. }
  45. mutate({userName, password});
  46. }
  47. return [isLoading, onClick];
  48. }