首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于用户操作的访问Vuex状态

基于用户操作的访问Vuex状态
EN

Stack Overflow用户
提问于 2018-05-04 22:36:11
回答 1查看 897关注 0票数 0

我正在使用Nuxt.js,我正在开发一个Uploader组件,我依赖于vue-上载-组件完整示例,基本上我删除了Edit功能,并实现了用于状态管理的Vuex,因此:

data()

代码语言:javascript
复制
files: this.$store.state.files.files,

模板

代码语言:javascript
复制
<file-upload
  ... others ...
  @input-filter="inputFilter"
  @input-file="inputFile"
  @input="inputUpdate"
  ref="upload">

方法中

代码语言:javascript
复制
inputUpdate(files) {
  this.$store.dispatch("files/setFiles", files)
},

每次添加文件时更新状态。

我有一个files.js存储模块,它可以工作的突变、操作和getter,并且当用户选择文件时,存储将被正确地更新。

代码语言:javascript
复制
export const state = () => ({
  files: []
})

我试图添加一个自定义编辑功能: 1)当用户选择具有适当编辑按钮的文件时,2)我将显示一些html输入,这些输入允许用户修改所选文件的某些字段

1)

代码语言:javascript
复制
<a :class="{'dropdown-item': true}" href="#" @click.prevent="onEdit(data.item)">Edit</a>

2)

代码语言:javascript
复制
methods:{
...
 onEdit(file){
      // file.id
    }
....

我想了解从存储中选择与用户选择的元素相对应的元素的最佳方法(比较id)。我想利用v-for,然后依靠v-show只显示用户选择的内容,但我当前的实现不起作用。

代码语言:javascript
复制
 <b-card
  v-for="(file, id) in files"
  :key="id"
  :title="file.name"
  :sub-title="file.size"
  class="my-5">
 </b-card>
EN

回答 1

Stack Overflow用户

发布于 2018-05-05 08:57:07

您应该使用计算而不是数据来保持反应性。

代码语言:javascript
复制
computed: {
  files () {
    return store.state.files.files
  }
}

要从商店中选择一个文件,有很多方法可以实现它。

代码语言:javascript
复制
data: {
   selectedFile: {}
},
methods:{
   onEdit(file){
     this.selectedFile = file;
   },
   cancelEdit(){
     this.selectedFile = {};
   }
   ...
}

不要用v-for来隐藏东西

代码语言:javascript
复制
<b-card
  v-if="selectedFile.id"
  :title="selectedFile.name"
  :sub-title="selectedFile.size"
  class="my-5 selected-file">
</b-card>
<b-card
  v-else
  v-for="(file, id) in files"
  :key="id"
  :title="file.name"
  :sub-title="file.size"
  class="my-5 files">
</b-card>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50183909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档