gpt4 book ai didi

javascript - VueJS 无需复杂的 v-if 语句即可获得异步状态

转载 作者:行者123 更新时间:2023-12-05 01:26:30 28 4
gpt4 key购买 nike

我有一个使用 Vue-Router 和 Vuex (Store) 的应用程序。

在仪表板组件上,显示用户信息。 Vue 从数据库中提取用户信息(异步)并将其推送到商店。

现在,在我的子组件中,我通过商店访问这些信息。问题是,在初始加载子组件时,商店中的用户条目是空的。 类型错误:$setup.user 为空。现在,解决这个问题的一种方法是在每个元素前面放置一个 v-if。但是,我觉得这很乏味。

我可以在每个 html 元素中放置一个 v-if 吗?

用户.vue:

<template>
<div>
<div id="profile_content">
<UserNavbar />
<router-view :key="$route.fullPath" />
</div>
</div>
</template>

用户仪表板:

<template>
<div>
<ProfileInformationCard>
<span v-if="user">{{ user.name }}</span>
<span v-if="user">{{ user.lastLogin }}</span>
</ProfileInformationCard>
</div>
</template>

<script>
import _ from "lodash";
import { useStore } from "vuex"
import { watch } from "vue"

export default {
setup(){
const store = useStore()
const user = store.state.user.currentUser

watch(() => _.cloneDeep(store.state.user.currentUser), () => {
user.value = store.state.user.currentUser;
}
);
}
}
</script>

最佳答案

最好让一些组件显示 loading... 或一些微调器而不是像这样的整个 ProfileInformationCard:

<div>
<ProfileInformationCard v-if="user">
<span>{{ user.name }}</span>
<span>{{ user.lastLogin }}</span>
</ProfileInformationCard>
<Loader v-else />
</div>

关于javascript - VueJS 无需复杂的 v-if 语句即可获得异步状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70264931/

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