如何修复未知的Vuex操作类型错误?[已关闭]

4sup72z8  于 2022-12-23  发布在  Vue.js
关注(0)|答案(1)|浏览(178)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
21小时前关门了。
Improve this question
一年前,我为另一个项目构建了一个响应式导航组件,所以我决定回收我的代码用于我的新项目。但它不起作用,我在控制台上得到的是:
[vuex]未知操作类型:导航/切换边栏

  • nav是位于存储文件夹中的文件的名称。
  • toogleSidebar是我在状态上用来处理变异的属性。

我有3个不同的组件。这里是第一个的代码,只是链接。
组件名称:标题链接。

<template>
  <ul class="nav-list">
    <li class="nav-item"><nuxt-link to="">Noticias</nuxt-link></li>
    <li class="nav-item"><nuxt-link to="">Categorias</nuxt-link></li>
    <li class="nav-item"><nuxt-link to="">Acerca de</nuxt-link></li>
    <li class="nav-btn">
      <nuxt-link to=""><button class="btn">Ingresar</button></nuxt-link>
    </li>
  </ul>
</template>

第二个组件的代码。组件名称:标题菜单。

<template>
  <header>
    <div>
      <nuxt-link to="/">
        <img src="../static/logo1.png" alt="" class="logo" />
      </nuxt-link>
    </div>
    <div
      class="drawer-toggle"
      role="button"
      @click="$store.dispatch('nav/toggleSidebar')"
    >
      <fa-icon icon="bars" class="icon" />
    </div>

    <div class="app-links">
      <header-links></header-links>
    </div>
  </header>
</template>

<script>
import HeaderLinks from './HeaderLinks.vue'

export default {
  components: { HeaderLinks },
}
</script>

最后一个组件名称为:侧导航标题。

<template>
  <div class="sidenav-container">
    <div v-if="isSidebar" class="backdrop" @click="hideSidebar"></div>
    <transition name="slide-side">
      <div v-if="isSidebar" class="sidenav">
        <header-links></header-links>
      </div>
    </transition>
  </div>
</template>

<script>
import HeaderLinks from './HeaderLinks.vue'
export default {
  components: { HeaderLinks },
  computed: {
    isSidebar() {
      return this.$store.getters['nav/toggleSidebar']
    },
  },
  methods: {
    hideSidebar() {
      this.$store.dispatch('nav/toggleSidebar')
    },
  },
}

下面是我的nav.js文件的代码:

export const state = () => ({
  toggleSibebar: false,
})

export const mutations = {
  TOGGLE_SIDEBAR(state) {
    state.toggleSibebar = !state.toggleSibebar
  },
}
export const actions = {
  toggleSibebar({ commit }) {
    commit('TOGGLE_SIDEBAR')
  },
}

export const getters = {
  toggleSibebar: (state) => state.toggleSibebar,
}

当我单击条形图标时,没有任何操作,相反,正如我前面提到的,我得到了一个控制台错误。

c8ib6hqw

c8ib6hqw1#

我有一个拼写错误,我写的不是togglesidebar而是togglesibebar。更正后,代码可以正常工作。
下面是代码:

export const state = () => ({
  toggleSidebar: false,
})

export const mutations = {
  TOGGLE_SIDEBAR(state) {
    state.toggleSidebar = !state.toggleSidebar
  },
}

export const actions = {
  toggleSidebar({ commit }) {
    commit('TOGGLE_SIDEBAR')
  },
}

export const getters = {
  toggleSidebar: (state) => state.toggleSidebar,
}

在我的项目上实现ESlint也是一个解决方案。

相关问题