gpt4 book ai didi

javascript - Vue 3 - inject() 只能在设置或功能组件中使用

转载 作者:行者123 更新时间:2023-12-04 01:09:24 25 4
gpt4 key购买 nike

我不明白为什么我会收到这个错误。我正在尝试在组合函数中使用 Vuex 存储,但它不断向我抛出有关注入(inject)的错误(我什至没有使用注入(inject))。我的应用程序对后端进行等待 api 调用,如果有错误调用我的组合函数。

[Vue warn]: inject() can only be used inside setup() or functional components.
inject @ runtime-dom.esm-bundler-9db29fbd.js:6611
useStore @ vuex.esm-bundler.js:13
useErrorHandling @ useErrorHandling.js:5
checkUserExists @ auth.js:53
这是我的作文功能
import { useStore } from 'vuex'

function useErrorHandling()
{
const store = useStore() // <-- this line

function showError(errorMessage) {
console.log(errorMessage)
}

return { showError }
}

export default useErrorHandling
如果我删除此行,则不会引发该错误
// const store = useStore()  // <-- this line
更新:这是调用函数的方式。
/**
* Check if a user exists in database
*/
static async checkUserExists(data)
{
const { env } = useEnv()
const { jsonHeaders } = useHTTP()
const { showError } = useErrorHandling()

try {
let response = await fetch(`${env('VITE_SERVER_URL')}/auth/check-user-exists`, {
method: 'POST',
body: JSON.stringify(data),
headers: jsonHeaders,
})

if (!response.ok) {
let errorMessage = {
statusText: response.statusText,
statusCode: response.status,
body: '',
url: response.url,
clientAPI: 'api/auth.js @ checkUserExists',
}

const text = await response.text()
errorMessage.body = text

showError(errorMessage) // <-- here
return
}

response = await response.json()
return response.user_exists
} catch (error) {
alert('Error occured!')
console.log(error)
}
}

最佳答案

错误告诉你 useStore仅用于组件内部,因为模块不是组件。来自 docs :

To access the store within the setup hook, you can call the useStore function. This is the equivalent of retrieving this.$store within a component using the Option API.


使用 store在一个模块中,您可以 import { store }从创建它的模块:
store.js
export const store = createStore({
...
})
其他模块
import { store } from './store'

关于javascript - Vue 3 - inject() 只能在设置或功能组件中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65340740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com