import React, { useEffect, useState } from 'react' import Taro, { useDidShow } from '@tarojs/taro' import { View } from '@tarojs/components' import { check_login_status } from '@/services/loginService' export function getCurrentFullPath(): string { const pages = Taro.getCurrentPages() const currentPage = pages.at(-1) if (currentPage) { const route = currentPage.route const options = currentPage.options || {} const query = Object.keys(options) .map(key => `${key}=${options[key]}`) .join('&') return query ? `/${route}?${query}` : `/${route}` } return '' } export default function withAuth

(WrappedComponent: React.ComponentType

) { const ComponentWithAuth: React.FC

= (props: P) => { const [authed, setAuthed] = useState(false) useEffect(() => { const is_login = check_login_status() setAuthed(is_login) if (!is_login) { const currentPage = getCurrentFullPath() Taro.redirectTo({ url: `/pages/login/index/index${ currentPage ? `?redirect=${currentPage}` : '' }`, }) } }, []) if (!authed) { return // 空壳,避免 children 渲染出错 } return } return ComponentWithAuth }