有一个 useFetch钩子
问题是我看了他的代码,不明白为什么那里使用关键字void
const fetchData = async () => {
dispatch({ type: 'loading' })
// If a cache exists for this url, return it
if (cache.current[url]) {
dispatch({ type: 'fetched', payload: cache.current[url] })
return
}
try {
const response = await fetch(url, options)
if (!response.ok) {
throw new Error(response.statusText)
}
const data = (await response.json()) as T
cache.current[url] = data
if (cancelRequest.current) return
dispatch({ type: 'fetched', payload: data })
} catch (error) {
if (cancelRequest.current) return
dispatch({ type: 'error', payload: error as Error })
}
}
void fetchData() // -> Как это работает?
这个怎么运作?它是无效的 TS-a 还是 JS-a?
最初,我以为是为了不写而写在那里的await
。但是在测试了这段代码之后,我确信事实并非如此。
这是通常的void 运算符。
在这种情况下,它被用来清楚地表明(对同事、对 linter、对两周后的我们自己)我们不是不小心忘记了函数的结果,而是故意忽略它。
fetchData()
它不影响函数本身的执行。