【问题标题】:Vuex state is readonlyVuex 状态是只读的
【发布时间】:2022-11-13 18:16:45
【问题描述】:

我想换一个Vuex 状态使用文档中的计算函数,但它没有改变,控制台给出了这个错误。

[Vue 警告]:写入操作失败:计算属性“renameActive”是只读的。

我正在使用 Tauri.js 中的 Vue CLI。

添加新的 Tab Vue 组件:

<template>
<div class="TabContainer flex_c_h flex_start gap1">
    <div class="tab grid_c">All</div>

    <Icons
        :customClass="'addTab'"
        :icon="'plus'"
        @triggered="AddTab" />
    <RenameField v-if="renameActive" />
</div>
</template>

<script>
import Icons from '@/components/Assets/Icons.vue'
import RenameField from '@/components/Popups/RenameField.vue'
export default {
    components: {
        Icons,
        RenameField
    },
    computed: {
        renameActive() {
            return this.$store.state.renameActive
        }
    },
    methods: {
        AddTab() {
            this.renameActive = true
        }
    }

}
</script>

<style lang="">

</style>

src/store/index.js

import { createStore } from 'vuex'

export default createStore({
  state: {
    navbar: [
      "upload", "folder", "reset", "settings", "about"
    ],
    currentTab: "All",
    renameActive: false,
  },
  getters: {
  },
  mutations: {
  },
  actions: {
  },
  modules: {
  }
})

src/main.js

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

createApp(App).use(store).use(router).mount('#app')

我怎样才能使它可写?

【问题讨论】:

  • 正确的computed: { renameActive() 是只读的——这与商店没有任何关系——也许你的意思是this.$store.state.renameActive = true

标签: javascript vue.js vuejs3 vuex tauri


【解决方案1】:

您可以在您的 vuex 商店中创建突变

 mutateActive: (state, val) => (state.renameActive = val),

和您将调用的 vuex 操作:

 setActive({ commit }, val) {
   commit('mutateActive', val);
 },

并在您的方法中调用 vuex 操作并传递值:

addTab() {
   this.$store.dispatch('setActive', true)
}

【讨论】:

  • 突变起作用。感谢您的回答?? 但是在我一直使用计算之前,因为对于仅在 1 或 2 个组件中使用的一些较小变量,它更快且代码更少。您可能知道导致只读问题的原因吗?我需要在 vue.config 或 main.js 中更改吗?
  • @Marcus Harting 嘿伙伴计算属性是只读的
  • 实际上,您也可以进行可写计算:vuejs.org/guide/essentials/computed.html#writable-computed@MarcusHarting
猜你喜欢
  • 1970-01-01
  • 2022-11-22
  • 2021-11-11
  • 2020-09-15
  • 2021-06-19
  • 2020-06-18
  • 1970-01-01
  • 2020-11-24
  • 2023-03-16
相关资源
最近更新 更多