Vue 3 对象 属性 returns 未定义
Vue 3 Object property returns undefined
如何从 Keycloak 对象中提取其他属性?
现在,
如果我用,
console.log(keycloak)
它将输出整个keycloak对象。即使我重新加载它也会留在控制台上。
但是当我使用的时候,
console.log(keycloak.token)
它将从 keycloak 对象输出令牌,但是当我重新加载页面时,它在控制台上显示未定义。
我的 Vue 组件:
<template>
<div class="home">
{{ arrowFunction() }}
</div>
</template>
<script lang="ts">
import { defineComponent } from "vue";
import { useKeycloak } from "@baloise/vue-keycloak";
export default defineComponent({
name: "Home",
setup() {
const { keycloak } = useKeycloak();
function arrowFunction() {
console.log(keycloak);
return keycloak;
}
return {
arrowFunction,
};
},
});
</script>
我的Main.ts:
import { vueKeycloak } from "@baloise/vue-keycloak";
import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
const app = createApp(App);
app.use(vueKeycloak, {
initOptions: {
onLoad: "login-required", // default
},
config: {
url: "https://xxxxxxxxxxxxxx.com/auth/",
realm: "xxxxx",
clientId: "xxxxclient",
},
});
createApp(App).use(store).use(router).mount("#app");
信息存储在这里:
keycloak包的README显示useKeycloak()
暴露了几个状态。其中一个好像是你一开始想要得到的(token)。
所以我建议您不要只获取密钥斗篷 属性 并尝试获取它的令牌,您可能希望直接获取您正在寻找的状态,因此,我会重写您的代码为
setup() {
const { keycloak, token } = useKeycloak();
function arrowFunction() {
console.log(keycloak);
console.log(token);
return keycloak;
}
return {
arrowFunction,
};
},
我从未在图书馆工作过,所以当我遗漏了重要的东西时请告诉我,但我认为这应该可以如您所愿。
进一步说明:
如果我们看一下 useKeycloak();
的文档,我们可以看到它将 return 一个具有各种属性的对象。其中我们有 keycloak 和 token。
我们通过在调用中解构它们来直接获取该对象的属性。
const { keycloak } = useKeycloak();
将与
相同
const ReturnValue = useKeycloak();
const keycloak = ReturnValue.keycloak;
所以我们可以通过将 return 值添加到大括号中来绑定 属性 值,从而导致:
const { keycloak, token } = useKeycloak();
// Same as:
// const ReturnValue = useKeycloak();
// const keycloak = ReturnValue.keycloak;
// const token = ReturnValue.token;
所以最初发生的事情是,您有效地记录了 console.log(useKeycloak().keycloak.token);
如何从 Keycloak 对象中提取其他属性? 现在,
如果我用,
console.log(keycloak)
它将输出整个keycloak对象。即使我重新加载它也会留在控制台上。
但是当我使用的时候,
console.log(keycloak.token)
它将从 keycloak 对象输出令牌,但是当我重新加载页面时,它在控制台上显示未定义。
我的 Vue 组件:
<template>
<div class="home">
{{ arrowFunction() }}
</div>
</template>
<script lang="ts">
import { defineComponent } from "vue";
import { useKeycloak } from "@baloise/vue-keycloak";
export default defineComponent({
name: "Home",
setup() {
const { keycloak } = useKeycloak();
function arrowFunction() {
console.log(keycloak);
return keycloak;
}
return {
arrowFunction,
};
},
});
</script>
我的Main.ts:
import { vueKeycloak } from "@baloise/vue-keycloak";
import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
const app = createApp(App);
app.use(vueKeycloak, {
initOptions: {
onLoad: "login-required", // default
},
config: {
url: "https://xxxxxxxxxxxxxx.com/auth/",
realm: "xxxxx",
clientId: "xxxxclient",
},
});
createApp(App).use(store).use(router).mount("#app");
信息存储在这里:
keycloak包的README显示useKeycloak()
暴露了几个状态。其中一个好像是你一开始想要得到的(token)。
所以我建议您不要只获取密钥斗篷 属性 并尝试获取它的令牌,您可能希望直接获取您正在寻找的状态,因此,我会重写您的代码为
setup() {
const { keycloak, token } = useKeycloak();
function arrowFunction() {
console.log(keycloak);
console.log(token);
return keycloak;
}
return {
arrowFunction,
};
},
我从未在图书馆工作过,所以当我遗漏了重要的东西时请告诉我,但我认为这应该可以如您所愿。
进一步说明:
如果我们看一下 useKeycloak();
的文档,我们可以看到它将 return 一个具有各种属性的对象。其中我们有 keycloak 和 token。
我们通过在调用中解构它们来直接获取该对象的属性。
const { keycloak } = useKeycloak();
将与
相同const ReturnValue = useKeycloak();
const keycloak = ReturnValue.keycloak;
所以我们可以通过将 return 值添加到大括号中来绑定 属性 值,从而导致:
const { keycloak, token } = useKeycloak();
// Same as:
// const ReturnValue = useKeycloak();
// const keycloak = ReturnValue.keycloak;
// const token = ReturnValue.token;
所以最初发生的事情是,您有效地记录了 console.log(useKeycloak().keycloak.token);