vue.js 更好的变种状态是在动作里面还是在组件里面?

ff29svar  于 2023-06-30  发布在  Vue.js
关注(0)|答案(1)|浏览(126)

我在我的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函数的形式)

exdqitrt

exdqitrt1#

我认为将该函数重命名为setCurrentUser()而不是getCurrentUser()会更合适,以使其目的更清楚并避免混淆。通过使用set的命名约定后跟state属性的名称,它表示该函数负责更新Pinia存储中的currentUser状态。
在Pinia中,通常提供用于阅读和更新状态的单独函数。存储区公开状态对象供组件读取,允许它们使用userStore.state.currentUser访问当前用户。要更新状态,组件可以调用存储中的setCurrentUser()函数

相关问题