我在我的Pinia商店中有这个功能:
async function getCurrentUser(){
let user: User | undefined = undefined;
if (auth.currentUser?.uid) {
user = await getUserById(auth.currentUser.uid)
state.value.currentUser = user;
}
}
所以,在一个组件中,我只需要调用:userStore.getCurrentUser();
并且我将从状态获取对当前用户的访问:userStore.state.currentUser
但是这种方法让我很困惑,因为我们在get函数中改变了状态。
因此,我认为最好这样做(在组件内部):
userStore.state.currentUser = await getUserById(auth.currentUser.uid)
userStore.state.currentUser //Do whatever you want
哪种选择更好?我拿不定主意。
这个问题更多的是关于方法而不是具体的实现(以getCurrentUser函数的形式)
1条答案
按热度按时间exdqitrt1#
我认为将该函数重命名为
setCurrentUser()
而不是getCurrentUser()
会更合适,以使其目的更清楚并避免混淆。通过使用set的命名约定后跟state属性的名称,它表示该函数负责更新Pinia存储中的currentUser
状态。在Pinia中,通常提供用于阅读和更新状态的单独函数。存储区公开状态对象供组件读取,允许它们使用
userStore.state.currentUser
访问当前用户。要更新状态,组件可以调用存储中的setCurrentUser()
函数