useRouter.js 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import Taro, { useRouter } from '@tarojs/taro'
  2. import { parseQueryString } from '@/utils'
  3. import { useModel } from '@/store'
  4. import { useEffect, useRef, useState } from 'react'
  5. import { getQrcode } from '@/services/miniapp'
  6. export default () => {
  7. const router = useRouter()
  8. const routerRef = useRef()
  9. const { qrCode } = useModel('person')
  10. const [toggleRefresh, setToggleRefresh] = useState()
  11. routerRef.current = router
  12. const scene = router?.params?.scene
  13. const loginScene = Taro.getStorageSync('scene')
  14. useEffect(() => {
  15. // 扫码进入
  16. if (scene) {
  17. if (scene === loginScene && qrCode) {
  18. const qrParams = parseQueryString(qrCode) || {}
  19. routerRef.current.params = {
  20. ...routerRef.current.params || {},
  21. ...qrParams,
  22. parseQRFinished: true,
  23. }
  24. setToggleRefresh(Math.random().toString())
  25. console.log('-----------qrCode---------------', qrCode)
  26. } else {
  27. console.log('-----------getQrcode---------------', scene)
  28. getQrcode(scene).then((res) => {
  29. const qrParams = parseQueryString(res.scene) || {}
  30. routerRef.current.params = {
  31. ...routerRef.current.params || {},
  32. ...qrParams,
  33. parseQRFinished: true,
  34. }
  35. setToggleRefresh(Math.random().toString())
  36. })
  37. }
  38. }
  39. }, [qrCode, scene])
  40. console.log('-----------routerRef.current---------------', routerRef.current)
  41. return routerRef.current
  42. }