InhiblabCore / vue-hooks-plus

High performance & Simplicity 🧲 Vue 3 Hooks library
https://InhiblabCore.github.io/docs/hooks
MIT License
1.64k stars 104 forks source link

如何知道useRequest自动发起的请求是被什么触发的? #225

Closed lyric-zemin closed 3 months ago

lyric-zemin commented 3 months ago

Description

const { data, loading } = useRequest(
  () => fn(),
  {
    refreshDeps: [dep],
    pollingInterval: 1000,
  },
)

如上,请求会被polling, dep, 以及第一次自动执行,如何在类似onBefore钩子中知晓请求是被如何触发的

Suggested solution

添加内部请求标识或者可执行方法判断触发方

const { data, loading, trigger, getTrigger } = useRequest(
  () => fn(),
  {
    refreshDeps: [dep],
    pollingInterval: 1000,
  },
)

console.log(trigger.value)
console.log(getTrigger ())
// dep
// polling ...

Alternative

No response

Additional context

No response

Validations

NelsonYong commented 3 months ago

@lyric-zemin 我觉得在内部提供这样的标识不太可行,方便告知你需要有这样标识符的目的吗,或许我们可以探讨一下更佳的方案。

lyric-zemin commented 3 months ago

@lyric-zemin 我觉得在内部提供这样的标识不太可行,方便告知你需要有这样标识符的目的吗,或许我们可以探讨一下更佳的方案。

感谢回复,现在存在一个需求,需要在轮询的时候,在接口增加一个入参作为标识 fromPolling=1

NelsonYong commented 3 months ago

@lyric-zemin 目前不打算增加对应的功能。如果是我,我会将请求变为 manual 手动请求,通过 watch 去监听 deps 和 useInterval 的方法去做轮询实现这个功能。