27 lines
675 B
TypeScript
27 lines
675 B
TypeScript
|
|
import { useEffect, useState } from "react"
|
||
|
|
import { toast } from "sonner"
|
||
|
|
import { fetchProductWithPackage } from "@/api/product"
|
||
|
|
import type { ProductItem } from "@/lib/models/product"
|
||
|
|
|
||
|
|
// 加载「产品+套餐」下拉数据(账号管理/订单筛选共用)
|
||
|
|
export function useProducts() {
|
||
|
|
const [products, setProducts] = useState<ProductItem[]>([])
|
||
|
|
|
||
|
|
useEffect(() => {
|
||
|
|
let cancelled = false
|
||
|
|
fetchProductWithPackage().then(res => {
|
||
|
|
if (cancelled) return
|
||
|
|
if (res.success) {
|
||
|
|
setProducts(res.data)
|
||
|
|
} else {
|
||
|
|
toast.error(res.message)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
return () => {
|
||
|
|
cancelled = true
|
||
|
|
}
|
||
|
|
}, [])
|
||
|
|
|
||
|
|
return products
|
||
|
|
}
|