RequireLogin.jsx 604B

123456789101112131415161718192021
  1. import React, { useState, useEffect } from 'react';
  2. import { useLocation, Navigate } from "react-router-dom";
  3. import { useModel } from '@/store';
  4. export default (props) => {
  5. const { user, getCurrentUser } = useModel('user');
  6. const [userStatus, setUserStatus] = useState(user && user.id ? 1 : 0);
  7. useEffect(() => {
  8. if (!user || !user.id) {
  9. getCurrentUser().then(() => {
  10. setUserStatus(1);
  11. }).catch(() => {
  12. setUserStatus(-1);
  13. });
  14. }
  15. }, []);
  16. return userStatus === 0 ? null :
  17. userStatus === -1 ? <Navigate to="/login?back=true" /> : props.children;
  18. }