谁能告诉我,为什么在下面的代码中,在返回块中,this
仍然是undefined
?
export const useAutoSave = (
cacheKey: string,
interval: number,
getSaveData: () => Omit<SaveDto, 'savedTime'>,
) => {
let timer: any
const { storage, reset } = useStorageObject<SaveDto>(
SaveDto,
'auto-save-' + cacheKey,
false,
)
const save = () => {
// ...
}
return {
reset,
getPrevSaved() {
return storage
},
save,
track() {
console.log(this) // <-- why is `this` `undefined` here?
this.disposer() // <-- reference error
timer = setInterval(save, interval)
},
disposer() {
clearInterval(timer)
},
}
}
2条答案
按热度按时间7hiiyaii1#
假设该函数位于模块
this
is automatically bound toundefined
by Babel中,导致您观察到的错误。要使代码正常工作,需要预先声明
disposer
(就像您对save()
所做的那样):sauutmhj2#
请参考功能组件迁移指南和Vue 3功能组件文档。
您应该将
props
和context
作为参数传递给函数组件。