Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

use-gen-data.ts 982B

123456789101112131415161718192021222324252627282930313233343536
  1. import type { GenRes } from '@/service/debug'
  2. import { useSessionStorageState } from 'ahooks'
  3. import { useCallback } from 'react'
  4. type Params = {
  5. storageKey: string
  6. }
  7. const keyPrefix = 'gen-data-'
  8. const useGenData = ({ storageKey }: Params) => {
  9. const [versions, setVersions] = useSessionStorageState<GenRes[]>(`${keyPrefix}${storageKey}-versions`, {
  10. defaultValue: [],
  11. })
  12. const [currentVersionIndex, setCurrentVersionIndex] = useSessionStorageState<number>(`${keyPrefix}${storageKey}-version-index`, {
  13. defaultValue: 0,
  14. })
  15. const current = versions?.[currentVersionIndex || 0]
  16. const addVersion = useCallback((version: GenRes) => {
  17. setCurrentVersionIndex(() => versions?.length || 0)
  18. setVersions((prev) => {
  19. return [...prev!, version]
  20. })
  21. }, [setVersions, setCurrentVersionIndex, versions?.length])
  22. return {
  23. versions,
  24. addVersion,
  25. currentVersionIndex,
  26. setCurrentVersionIndex,
  27. current,
  28. }
  29. }
  30. export default useGenData