usePoster.js 916B

1234567891011121314151617181920212223242526272829303132
  1. import { useEffect, useState } from 'react'
  2. import { getMiniQrcode } from '@/services/common'
  3. export default function usePoster(person, poster, router, paramsRef) {
  4. const [posterData, setPosterData] = useState()
  5. useEffect(() => {
  6. if (poster) {
  7. const page = router.path.indexOf('/') === 0 ? router.path.substring(1) : router.path
  8. const scene = paramsRef.current
  9. getMiniQrcode({ page, scene }).then((miniCode) => {
  10. setPosterData({
  11. poster,
  12. miniCode,
  13. name: person.name || person.nickname,
  14. avatar: person.avatarurl,
  15. })
  16. }).catch(() => {
  17. setPosterData({
  18. poster,
  19. miniCode: undefined,
  20. name: person.name || person.nickname,
  21. avatar: person.avatarurl,
  22. })
  23. })
  24. }
  25. // eslint-disable-next-line react-hooks/exhaustive-deps
  26. }, [router.path, poster])
  27. return posterData
  28. }