使用 VueX 访问数据

Posted

技术标签:

【中文标题】使用 VueX 访问数据【英文标题】:Data access with VueX 【发布时间】:2021-09-22 06:43:07 【问题描述】:

我想用 VueX 将我的数据存储在我的 VueJS 项目中。

这是我的 index.js

import axios from 'axios'
import  createStore  from 'vuex'
export default createStore(
  state: 
    tuto: [],
    data: [] 
  ,
  
  actions: 
    getData(commit)
      axios.get('data/mock.json')
      .then(res => 
        commit('SET_DATA', res.data)
      )
    ,
    getTutoriel(commit)
      axios.get('data/tutoriel.json')
      .then(res => 
        commit('SET_TUTORIEL', res.data)
      )
    ,
    
  ,
  mutations: 
    SET_DATA(state, data)
      state.data = data.data
    ,
    SET_TUTORIEL(state, tuto)
      state.tuto = tuto.data
    ,
  ,
  modules: 
  
)

当我在 Home.vue 中这样做时,它正在工作:

<template>
data
</template>

<script>


export default 
computed:
  data() 
    return this.$store.state.data ;
  
,
mounted()
  this.$store.dispatch("getData");


</script>

但是当我这样做时:

<template>
tuto
</template>

<script>


export default 
computed:
  data() 
    return this.$store.state.tuto ;
  
,
mounted()
  this.$store.dispatch("getTutoriel");


</script>

我在控制台中出现以下错误:

Vue 警告]:在渲染期间访问了属性“tuto”,但未在实例上定义。

但是我认为我在做同样的事情,我不明白为什么它使用数据而不是教程。

谢谢

【问题讨论】:

【参考方案1】:

存储状态属性应该作为计算属性返回,尝试返回具有相应名称的状态:

<template>
tuto
</template>

<script>


export default 
computed:
  tuto() 
    return this.$store.state.tuto ;
  ,
  data() 
    return this.$store.state.data ;
  
,
mounted()
  this.$store.dispatch("getTutoriel");


</script>

【讨论】:

哦,是的,我忘了重命名 tuto 中的函数数据...谢谢!!

以上是关于使用 VueX 访问数据的主要内容,如果未能解决你的问题,请参考以下文章

vuex辅助函数介绍和使用

无法将存储数据访问到 vuex 中的组件中

如何在 vuex 的挂载函数中访问存储数据

Vuex 使用了 module 后的访问方法 ..

vuex的核心概念

VUEX 的使用学习二: state