vue.js - 如何渲染存储在vuex中的数组

标签 vue.js vuex

我正在尝试渲染以卡片形式存储在商店中的对象数组。但是,我做不到。因为它显示类型错误。 它指出

“呈现错误:“类型错误:无法读取未定义的属性“项目””

我尝试使用此关键字并将代码转移到 mounted() Hook 。 但是,错误不断出现。

代码如下: CardRenderer.vue:

<template lang="html">

  <div>       
    <b-container class="bv-example-row">      
       <b-row v-for="(row, i) in this.  rows" v-bind:key="i">       
          <b-col v-for="(item, j) in row" v-bind:key="j" >

                    <!-- you card -->
              <b-card 
                :title="item.title" 
                img-src="item.icon" 
                img-alt="Image" 
                img-top 
                tag="article" 
                style="max-width: 20rem;" 
                class="mb-2"
              >
                <b-card-text>
                  <h1>{{item.name}}</h1>
                  <pre>{{item.description}}</pre>
                </b-card-text>
                  <b-button :href="'/dashboard/'+this.item.name" variant="primary">More</b-button>
              </b-card>                
          </b-col>
        </b-row>
    </b-container>    
  </div>

</template>

<script lang="js">
  export default  {
    name: 'CardRenderer',
    props: {

    },
     data() {
      return {
        // rows: []
      }
    },
    mounted() {

    },

    methods: {

    },
    computed: {
       rows() {
               const itemsPerRow = 3
                var rows = []
                let arr = this.$store.getters.responseAPI.apps
                // eslint-disable-next-line
                console.log(arr)
                for (let i = 0; i < arr.length; i += itemsPerRow){
                    let row = []
                    for (let z = 0; z < itemsPerRow; z++) {
                        row.push(arr[z])
                    }
                    rows.push(row)
                }


                // eslint-disable-next-line

                // console.log(this.rows) 
                return rows[0]
            }

    }
  }
</script>

<style scoped>

</style>

这是错误的样子。 enter image description here

这就是行对象的样子 enter image description here

如何消除错误并渲染卡片。

我很乐意将更改后的代码作为答案。 谢谢:)

最佳答案

我认为您的计算属性返回语句有误。

尝试将 return rows[0] 替换为 return rows 以返回数组而不是第一项 :)


我终于发现了一个错误)) 这是我在沙箱中的代码示例:https://codesandbox.io/embed/vue-template-sm0yx

模板有误,只需从 :href="'/dashboard/'+this.item.name" 中删除 this 即可看起来像这样::href="'/dashboard/'+item.name"

那应该行得通!))

关于vue.js - 如何渲染存储在vuex中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56577364/

相关文章:

typescript - 使用 NuxtJS 和 vuex-module-decorators 的动态 vuex 存储模块

javascript - 使用 TypeScript 进行 Vuex 突变时,对象可能是 'undefined'

javascript - 在 vuex + Firebase 应用程序中获取使用重定向方法登录的结果

javascript - Vuex 突变更新状态,计算属性永远不会反射(reflect)标记中的更新

javascript - 使用通用的 vuex 突变

javascript - Vue.js 组件中的动态值

javascript - 如何使用 vuejs 定位表格单元格中的元素?

vue.js - 如何在vue cli 3生成的项目中完成删除eslint?

javascript - "const [, xxx]"是什么意思?

javascript - 在 vue 中的 Promise 中传递数据