【问题标题】:How to get access of state in js file VUEX如何访问 js 文件 VUEX 中的状态
【发布时间】:2023-03-28 23:17:02
【问题描述】:

我想访问user.jsvuexstate 属性currentUser 以在auth.js 中使用它,但如果我写:store.state.currentUser.uid === 它将不起作用...

我得到这个错误:

无法读取未定义的属性“状态”。

代码中缺少什么?

树:

src
 store
   user
    |>user.js
    |>mutations.js
   index.js
 auth.js

user.js:

 const state = {
   profile: {},
   loggedIn: false,
   currentUser: null,
   userProfile: {}
 }

 export default {
   namespaced: true,
   state
 }

auth.js:

import store from './store'
const fb = require('./firebaseConfig.js')

fb.auth.onAuthStateChanged(user => {
 if (user) {
  fb.postsCollection.orderBy('createdOn', 'desc').onSnapshot(querySnapshot => {

  let createdByCurrentUser
  if (querySnapshot.docs.length) {
    createdByCurrentUser = store.state.currentUser.uid === 
      querySnapshot.docChanges()[0].doc.data().userId ? 'Yes' : 'No'
    console.log(createdByCurrentUser)
   }
 })
 }
})

index.js

import Vue from 'vue'
import Vuex from 'vuex'
import user from '@/store/user'

Vue.use(Vuex)

const store = new Vuex.Store({
 state: {
   awesome: true
 },
 modules: {
  user
 }
})

export default store

【问题讨论】:

    标签: javascript vue.js vuejs2 vuex


    【解决方案1】:

    你需要使用getters,看看doc

    getters.js

    export default {
      currentUser
    }
    
    function currentUser({ currentUser }) {
      return currentUser;
    }
    

    user.js

    import getters from './getters'
    
    export default {
      namespaced: true,
      state: {
        profile: {},
        loggedIn: false,
        currentUser: null,
        userProfile: {}
      },
      getters
    }
    

    auth.js

    import store from './store';
    
    const currentUser = store.getters['user/currentUser'];
    

    因为你对模块进行了命名空间,你必须使用它的名字作为前缀来访问 getter 函数

    【讨论】:

    • 您是否将store.state.currentUser.uid 替换为store.getters['user/currentUser'].uid
    • so 设置为:currentUser.uid === ...而不是 store.state.currentUser.uid
    • 所以我设置了 const name currentUser (const currentUser = store.getters['user/currentUser'];)
    • 也许在我设置了 mapState 的世界组件中?
    猜你喜欢
    • 2020-05-22
    • 2019-02-08
    • 2021-09-23
    • 2021-04-21
    • 2018-05-28
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 2021-02-23
    相关资源
    最近更新 更多