vue.js - VueJS + Vue.Draggable + Vuex Store + 计算变量

标签 vue.js vuejs2 vuex vuedraggable vue.draggable

有没有办法在 Vuex Store 中使用带有计算变量的 Vue.Draggable 列表?我对 VueJS 还很陌生,这是我当前的组件设置:

// Template
<draggable class="list-group" :list="list1" group="people">
  <div
    class="list-group-item"
    v-for="(element, index) in list1"
    :key="element.id"
  >{{ element.name }} ({{ element.list }}) ({{ index }})</div>
</draggable>

// Script
computed: {
  list1: {
    return this.$store.getters.listItems.filter(item => item.list === 1)
  }
}

// Store
const getters = {
  listItems: (state) => {
    return state.items
  }
}

没有计算变量,一切正常。使用计算变量时,我可以在列表之间拖动列表项,但是 UI 不会更新,因为它是从商店计算的。
基本上,我需要的是根据输入文件(json)显示多个列表。这些列表具有可以在不同列表之间拖动的列表项(使用 Vue.Draggable)。此外,用户可以创建新的列表项/删除现有的列表项。
实现这一目标的最佳方法是什么?

先感谢您。

最佳答案

在一个复杂的可拖动用例中,也使用 vuex,我最终创建了一个名为“changes”的状态变量,每次发生变化时,它都会增加(通过 vuex 突变)。与拖动相关联的数据在数据中,而不是在商店中。我手动同步两者。
我使用它 - 通过观察者 - 用完全新鲜的数据触发我的基本组件的重新渲染。
这个解决方案很难看,在 vue3 中可能不需要。

关于vue.js - VueJS + Vue.Draggable + Vuex Store + 计算变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58918652/

相关文章:

javascript - 为什么不能使用 VueJS 在 vue.config.js 文件中使用 ES 导入?

javascript - 如何将所有静态字符串放在一处

laravel - 如何在自定义的Laravel Nova工具中使用确认对话框?

vue.js - [Vue警告] : Error in render: "TypeError: Cannot read properties of undefined (reading ' length')"error when using datatables in vue

arrays - 如何在 Vuex Store 中管理嵌套数组并通过组件传递它

javascript - vue mapGetters 没有准时到达

javascript - Vue.js 不会使用 v-for 重新渲染组件

vue.js - vuejs 表单计算属性

javascript - 在 VueJS 中注入(inject) PHP 数据的正确方法是什么?

javascript - 如果没有有效负载参数,Vuex 提交无法工作