javascript - Vuex 将状态对象默认设置为状态数组中的对象

标签 javascript vue.js vuex

如果我的商店里有:

 state: {
     items: [],
     currentItem: {}
 }

我想选择数组中的第一个项目作为默认 currentItem:

 state: {
    items: [],
    currentItem: state.items[0]
 }

这是无法完成的,因为状态内部未定义。 我知道必须通过突变来改变状态。但如果状态是 bool 值,我可以将其设置为默认值 false。

有没有办法让它与我上面尝试的方式类似?

最佳答案

您正在寻找computed值。

Vue.config.devtools = false;
Vue.config.productionTip = false;

var app = new Vue({
  el: '#app',
  data: {
    items: ["First Item", "Second Item"],
    index: 0
  },
  computed: {
    currentItem() {
      return this.items[this.index];
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  {{ currentItem }}
</div>

在商店中,您可以使用getter达到同样的目的。

  getters: {
    currentItem: state => {
      return state.items[state.index];
    }
  }

关于javascript - Vuex 将状态对象默认设置为状态数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60364328/

相关文章:

javascript - Nuxt,将 Vuex 存储拆分为单独的文件会出现错误 : unknown mutation type: login

javascript - 将数据的json加载到vuex存储中并在组件中访问

javascript - 如何从 tensorflow.js 下载模型和权重

laravel - CKEditor5 与 vue.js 和 laravel 的集成

javascript - Vue JS 如果出现错误则更改提交按钮

vue.js - 如何使用 VueJS 中的 API 将数据表单以 JSON 形式发布

javascript - 在 Vuex 中存储 Fabric.js Canvas 引用 - [vuex] 不要在突变处理程序之外改变 vuex 存储状态

javascript - 在没有 undefined 的情况下从 A 数组移动到 B 数组

php - 使用 jquery 和 php 验证联系表单

javascript - 框中的 Google map 标记内容