开发者问题收集

尝试关闭 IONIC+VUE(使用 vuex)中的弹出窗口时出现错误 Uncaught RangeError: Maximum call stack size reached

2022-01-06
457

早上好,开发人员。我正在使用这个 IONIC + VUE 应用程序,特别是在一些具有某些功能的弹出窗口,但由于某种原因,弹出窗口的行为很奇怪,因为一旦打开并单击关闭它,第一次模式仍然存在并引发此错误:

Uncaught RangeError: Maximum call stack size exceeded
    at Object.ownKeys 
    at hasBinary (is-binary.js:48)
    at hasBinary (is-binary.js:49)
    at hasBinary (is-binary.js:49)
    at hasBinary (is-binary.js:49)
    at hasBinary (is-binary.js:49)
    at hasBinary (is-binary.js:49)
    at hasBinary (is-binary.js:49)
    at hasBinary (is-binary.js:49)
    at hasBinary (is-binary.js:49)

然后在第二次单击时关闭。

让我给你介绍一下我所做的事情的背景。

因此,这里的模板带有一个按钮,它会触发 vuex 中执行某些操作的方法,并且还包括关闭模式的方法(closeOpenedPopOver())

注意:如果我不将调度程序操作放入 vuex,模式将正确关闭

TEMPLATE

    <ion-content>
      <ion-row>
        <ion-col size="6"></ion-col>
        <ion-button @click="stopModal()">
          Stop
        </ion-button>
      </ion-row>
    </ion-content>

METHOD

 methods: {
    ...mapActions(["someAction"]),

    stopModal(): void {
      this.$store.dispatch("someAction", {
        dataPopOver: 'something sent',
      });
     
      this.closeOpenedPopOver();
    },
    //method that set an action in vuex and also has the method that
    // closes the modal

    closeOpenedPopOver(): void {
      popoverController.dismiss();
    },
    //modal closer
  },

VUEX

    someAction({  dispatch }, payload) {
      commit("");
      dispatch("otherAction");
      socket.emit("something", payload);
    },
   //This first action emit something through sockets IO and also call other action in 
   charge of closing doing other stuffs


     otherAction({ state, commit }) {
      ......some other stuffs...
     },

知道为什么会发生这种情况吗?

提前致谢,祝 2022 年新年快乐

2个回答

很奇怪,但降级@ionic/vue 版本后问题就消失了。

Enrique GF
2022-01-06

此问题已在 Ionic v6.0.4 中修复

t0byman
2022-01-20