考虑以下合成函数:
import { computed, ref } from '@vue/composition-api'
import { isInternetExplorer } from 'src/services/utils/utilsService'
import { Screen } from 'quasar'
import { auth, getAllScopes } from 'src/services/auth/authService'
const isLoginPopup = Screen.lt.sm || isInternetExplorer ? false : true
const accountID = ref('')
export const setAccountID = () => {
const account = auth.getAccount()
if (account) { accountID.value = account.idTokenClaims.oid }
else { accountID.value = '' }
}
export const useAccount = () => {
const loading = ref(false)
const disabled = ref(false)
const login = async () => {
loading.value = true
disabled.value = true
const allScopes = getAllScopes()
if (isLoginPopup) {
try {
await auth.loginPopup(allScopes)
} finally {
setAccountID()
disabled.value = false
loading.value = false
}
} else {
auth.loginRedirect(allScopes)
}
}
const logout = () => { auth.logout() }
return {
accountID: computed(() => accountID.value),
isAuthenticated: computed(() => Boolean(accountID.value)),
loading: computed(() => loading.value),
disabled: computed(() => disabled.value),
login, logout,
}
}
现在,当我想在/router/index中使用
Vue抛出错误:“未捕获错误:[Vue composition api]必须在使用任何函数之前调用Vue.use(plugin)。”isAuthenticated
computed属性时。js
import { route } from 'quasar/wrappers'
import VueRouter from 'vue-router'
import routes from './routes'
import { useAccount } from 'src/comp-functions/useAccount'
export default route(function ({ Vue }) {
Vue.use(VueRouter)
const Router = new VueRouter({
scrollBehavior: () => ({ x: 0, y: 0 }),
routes,
mode: process.env.VUE_ROUTER_MODE,
base: process.env.VUE_ROUTER_BASE,
})
Router.beforeEach((to, from, next) => {
const { isAuthenticated } = useAccount()
if (isAuthenticated || to.path === '/' || to.path === '/login') {
next()
} else {
next('/login')
}
})
return Router
})
组件API由文件“/boot/auth”中的Quasar Framework启动文件实例化。js':
import VueCompositionApi from '@vue/composition-api'
import { boot } from 'quasar/wrappers'
export default boot(({ Vue }) => {
Vue.use(VueCompositionApi)
})
有没有办法在组件之外使用导出的计算属性?
根据这个例子,它是一个使用相同组合API的库,当路由器
对象中实例化了已验证
时,它应该可以工作。有更多的人在努力解决这个问题,但我似乎无法正确处理。
我有同样的错误,我只是升级了@vue/comating-api的版本。
您是否正确安装了VueCompostionApito
?
You must install @vue/composition-api via Vue.use() before using other APIs:
import Vue from 'vue';
import VueCompositionApi from '@vue/composition-api';
Vue.use(VueCompositionApi);
这个问题由Vue上的一位朋友解决。js论坛。对于其他遇到这个问题的人,我会在这里发布他的答案。简而言之,你需要创建一个单独的文件来安装composition API插件,并在路由器/索引中调用该文件。ts
文件来实例化插件。
这是因为合成API不在Vue内部。随着Vue 3的发布,这一问题将得到解决。
你需要Vue。在尝试使用属于
。@vue/composition api
的任何内容之前,请使用(CompositionApi)
在你的main中。js
或索引。js
,应用程序入口点,请先安装:
import Vue from 'vue'
import VueCompositionApi from '@vue/composition-api'
Vue.use(VueCompositionApi)
这有效。但我假设您的文件看起来不像这样,它看起来更像下一个:
import Vue from 'vue'
import VueCompositionApi from '@vue/composition-api'
import { isAuthenticated } from '@/store/auth'
Vue.use(VueCompositionApi)
这将再次破坏一切,因为安装composition API(Vue.use(VueCompositionApi)
)的行位于从“@/store/auth”导入使用它的内容的行之后(import{unauthenticated}
)
同时,在Vue 3.0发布之前,您可以创建一个文件,只需安装插件即可:
// installCompositionApi.js
import Vue from 'vue'
import VueCompositionApi from '@vue/composition-api'
Vue.use(VueCompositionApi)
然后在你的切入点:
// main.js
import './installCompositionApi.js'
import Vue from 'vue'
import { isAuthenticated } from '@/store/auth'
if (isAuthenticated.value) {
// ...
} else {
// ...
}
这会管用的。
我正在使用vue 2.6.14和组合api 1.3.3包来使用组合api。我有 我的主菜。像 我试着开一家店 我有一个 在 在我尝试导入商店来使用它 我得到错误 我尝试了这里的所有解决方案,但没有任何效果。如果我从'@/store'中删除
好吧,我知道我试图混合mysql和MySQLI....
(操作系统:Windows 10;XAMPP v3.2.2;Visual Studio代码1.20.0) 我对php mysqli有一个问题。它说mysqli_connect函数没有定义。我尝试过很多解决方案——甚至在堆栈溢出中——但这些解决方案都不适合我。 我已经将PHP从5升级到7。在我的phpinfo中,似乎没有启用mysqli。所以我检查了是否有php_mysqli。我的php文件夹中的d
问题内容: 我试图与XAMPP和MySQL服务器建立简单连接,但是每当我尝试输入数据或连接到数据库时,都会出现此错误。 致命错误:未捕获错误:在C:\ xampp \ htdocs \ register.php:22中调用未定义函数mysql_connect() 堆栈跟踪:#0 {main}在第22行的C:\ xampp \ htdocs \ register.php中抛出 第22行的示例: 问题
我在尝试访问http://localhost/phpmyadmin/时收到以下错误: 在这里回顾了类似的主题后,我做了以下工作: null 我运行的是Windows10,Apache2.4-64bits、PHP7-64bits和mysqlserver5.7。Apache运行良好,PHP也运行良好(访问info.PHP无需担心) 谢了。
我正在按照一个在线教程来创建一个迷你购物车,一切都很顺利,但现在我得到了这个错误: 致命错误:未捕获错误:调用未定义函数mysql_query()