当前位置: 首页 > 知识库问答 >
问题:

Vuex:无法正确初始化存储

沈栋
2023-03-14

我有一个 vue3 应用程序,并尝试启动并运行 vuex 4。

这是我的主要.js:

import { createApp } from 'vue'
import App from './App.vue'
import 'leaflet/dist/leaflet.css';
import { Icon } from 'leaflet';
import mitt from 'mitt';
import store from './store';



/* Theme variables */
import './theme/variables.css';

delete Icon.Default.prototype._getIconUrl;
Icon.Default.mergeOptions({
    iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
    iconUrl: require('leaflet/dist/images/marker-icon.png'),
    shadowUrl: require('leaflet/dist/images/marker-shadow.png'),
});

export const eventHub = mitt();



const app = createApp(App)
    .use(IonicVue)
    .use(store);

app.mount('#app');

我的店铺.js:

import { createStore } from 'vuex'

export const store = createStore({
    state() {
        return {
            aantalBankjes: 0
        }
    },

    mutations: {
        vernieuwAantalBankjes(state, n) {
            // mutate state
            state.aantalBankjes = n;
            console.log("Store: vernieuwAantalBankjes");
            console.log(n);
        }
    },

    getters: {
        getAantalBankjes(state) {
            return state.aantalBankjes;
        }
    }
})

然后我想在组件中使用 vuex 存储。此组件最重要的代码:

<template>
  <div id="myMap" style="width: 100%; height: 100%"></div>
</template>

<script>
import L from "leaflet";
import { eventHub } from "../main";
import { Geolocation } from "@capacitor/geolocation";
import icons from "../mixins/icons.js";

const axios = require("axios");

export default {
    

  methods: {
      getBankjes() {
      let vertices = this.calculateRetrievalArea(this.map.getCenter());
      axios
        .get(
          "https://www.evenuitrusten.nl/api/area?lngLow=" +
            vertices.lngLow +
            "&lngHigh=" +
            vertices.lngHigh +
            "&latLow=" +
            vertices.latLow +
            "&latHigh=" +
            vertices.latHigh +
            "&number=200"
        )
        // .get("https://www.evenuitrusten.nl/api/area/test")
        .then((response) => {
          this.bankjes = response.data;
          console.log("Bankjes: axios has returned data");
          this.placeMarkers(this.bankjes);
          this.aantalBankjes=this.bankjes.length;
          console.log("Before commit");
          this.$store.commit('vernieuwAantalBankjes',this.aantalBankjes);
          console.log("After commit");
          return this.bankjes;
        })
        .catch(function (error) {
          // handle error
          console.log("bankjes:" + error.response);
        });
    },

我在这个.$store.commit遇到了一个问题。我从未到达“ console.log(”提交后“);”行。相反,捕获功能被击中。控制台中没有错误消息。

我做错了什么?

亲切问候

休 伯特

共有1个答案

子车凯泽
2023-03-14

我是 Vue 的新手...但我读到“突变必须是同步的”......并在异步代码中调用它。所以,创建一个动作女巫会调用突变,你调用动作。

actions: {
  act_vernieuwAantalBankjes({commit}, data) {
     commit('vernieuwAantalBankjes',data);
  }
}

并调用异步代码中的操作:this.$store.dispatch('act_vernieuwAantalBankjes',this.aantalBankjes);

 类似资料:
  • 问题内容: 用RefluxJS异步初始化数据的正确方法是什么?是否有类似于AngularJS的解决方案,或者Flux的实现与此无关(路由器应该处理此职责)? 问题答案: 在应用程序的顶级组件中,使用方法(docs)触发获取数据的操作。最初渲染组件时将调用此方法。 例如:

  • 问题内容: 我正在设置用于学习JavaEE7中CDI的基本环境。我有以下代码可以启动。只是启动和关闭。 我正在控制台上关注。 有问题的线是。这仅表示依赖注入将不起作用。但是我不确定是什么问题。我已经添加了。我什至没有达到初始化对象的目的,那为什么会出现这个问题呢? Weld的官方文档还给出了阅读此答案后得到的相同代码。“ Antonio Goncalves”撰写的“ Beginning Java

  • 问题内容: 将log4j添加到我的应用程序后,每次执行我的应用程序时,都会得到以下输出: 看来这意味着缺少配置文件。此配置文件应位于何处,什么是良好的入门内容? 我使用纯Java开发桌面应用程序。因此没有网络服务器等… 问题答案: 默认情况下,在上查找名为或的文件。 您可以按照此处所述通过设置系统属性来控制它用来初始化自身的文件(查找“默认初始化过程”部分)。 例如: 将导致在类路径上查找名为的文

  • 问题内容: 要声明一个具有固定大小的空切片,最好这样做: 要么: 只想知道哪种方法是正确的。 问题答案: 您提供的两个选择在语义上是相同的,但是使用会导致内部调用 runtime.makeslice (Go 1.14)。 您还可以选择保留其值: 如Golang.org博客中所述: nil切片在功能上等效于零长度切片,即使它没有指向任何内容。它的长度为零,可以附加分配。 甲片段将然而入而空片将编组成

  • 要声明大小不固定的空切片,最好执行以下操作: 或: 只是想知道哪一个是正确的方法。

  • 我们的项目中有一个不可替代代币状态和不可替代代币合约的自定义实现。我们正在使用下面的代码来发行我们的自定义不可替代代币。 当试图将上面获得的事务构建器转换为有线事务时(< code > builder . towiretransaction(service hub);)我们在下面的堆栈跟踪中得到一个错误。

  • 我有一个使用MIP SDK的Azure函数,当调用< code>MIP时,我得到以下错误。CreateMipContext(...): 令人惊讶的是,该错误仅在 Azure 上运行时发生。在本地运行时,一切都很好。 我正在使用MIP SDK v1.8.86和.NET Core 3.1。 知道OneDS是什么或者是什么导致了错误吗?

  • 新CONF:我做了一些改变来配合你所说的。现在我删除了hibernate-cfg.xml并在spring-servlet.xml中做了所有的conf: 它可能来自我的java文件吗? 错误是: Bean 类 [org.springframework.orm.hibernate4.LocalSessionFactoryBean] 的属性 'transaction' 无效:Bean 属性 'trans