router.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import { deepClone } from './index.js'
  2. const delayCall = (fun, timeout) => {
  3. if (timeout) setTimeout(fun, timeout)
  4. else fun()
  5. }
  6. export const navBackAndEvent = (eventChannel, backData, timeout = 0, delta = 1) => {
  7. delayCall(() => {
  8. eventChannel.emit('backData', backData)
  9. uni.navigateBack({
  10. delta
  11. })
  12. }, timeout)
  13. }
  14. export const navToAndEvent = (url, data, acceptCallback, timeout = 0) => {
  15. return new Promise(resolve => {
  16. delayCall(() => {
  17. uni.navigateTo({
  18. url,
  19. events: {
  20. backData: data => {
  21. acceptCallback && acceptCallback(data)
  22. resolve(data)
  23. }
  24. },
  25. success: ({ eventChannel }) => {
  26. if (eventChannel && eventChannel.emit) {
  27. eventChannel.emit('navData', deepClone(data))
  28. }
  29. },
  30. fail: console.log,
  31. })
  32. }, timeout)
  33. })
  34. }
  35. export const navTo = (url, options, timeout = 0) => {
  36. delayCall(() => {
  37. uni.navigateTo({
  38. url,
  39. fail: console.log,
  40. ...options
  41. })
  42. }, timeout)
  43. }
  44. export const redTo = (url, timeout = 0) => {
  45. delayCall(() => {
  46. uni.redirectTo({
  47. url,
  48. fail: console.log
  49. })
  50. }, timeout)
  51. }
  52. export const clearTo = (url, timeout = 0) => {
  53. delayCall(() => {
  54. uni.reLaunch({
  55. url,
  56. fail: console.log
  57. })
  58. }, timeout)
  59. }
  60. export const tabTo = (url, timeout = 0) => {
  61. delayCall(() => {
  62. uni.switchTab({
  63. url,
  64. fail: console.log
  65. })
  66. }, timeout)
  67. }
  68. export const shTab = (url, timeout = 0) => {
  69. delayCall(() => {
  70. uni.switchTab({
  71. url,
  72. fail: console.log
  73. })
  74. }, timeout)
  75. }
  76. export const navBack = (timeout = 0, delta = 1) => {
  77. delayCall(() => {
  78. uni.navigateBack({
  79. delta
  80. })
  81. }, timeout)
  82. }