如何将数据传递给子对象并将其呈现在子组件中?

时间:2020-10-19 10:54:47

标签: javascript vue.js

我试图将一个数组从父对象传递给孩子,但在孩子而不是父对象中渲染/输出它。在我发现的教程中,我只能在父级中渲染数组。例如,我有以下内容:

孩子

<template>
    <div>
        {{tile.name}} {{formattedPoints}}
    </div>
</template>

<script>
    export default {
        props: {
            tile: {
                required: true,
                type: Object
            }
        },
        
        computed: {
            formattedPoints() {
                return this.tile[0].name = 5
            }
        }
    }
</script>

父母

<template>
    <div>
        <User v-for="tile in tileMenu" :key="tile.id" :tile="tile" />
    </div>
</template>

<script>
    import User from './Home.vue'
    import { ref } from 'vue'

    export default {
        components: {
            User
        },

        setup() {
            const tileMenu = ref([
                { id: 1, name: 'tile1' },
                { id: 2, name: 'tile2' },
            ])
            return { tileMenu }
        }
    }
</script>

在这个示例中,我将与父级一起输出,但我希望与孩子一起输出。在我的思考过程中,这应该是可能的,因为无论如何我都会将数组传递给子组件,并且如果我这样调用它

<template>
    <div>
        {{tile[0].name}} 
    </div>
</template>

它应该给我输出与子组件。但这什么也没输出。我该如何解决这个问题?预先感谢

1 个答案:

答案 0 :(得分:0)

我可以向您建议(并且ID必须是唯一的,因为它是for循环中的关键)

父母:

<template>
  <div>
    <User :tileMenu="tileMenu" /> <!--pass all array-->
  </div>
</template>

<script>
import User from "./Home.vue";

const tileMenu = [
  { id: 1, name: "tile1NAME" },
  { id: 2, name: "tile2NAME" },
];

export default {
  components: {
    User,
  },
  data() {
    return {
      tileMenu: tileMenu,
    };
  },
};
</script>

孩子:

<template>
  <div>
    <div v-for="tile in tileMenuChild" :key="tile.id">
      {{ tile.name }} with id {{ tile.id }}
    </div>
  </div>
</template>

<script>
export default {
  props: {
    tileMenu: Array,
  },
  data() {
    return {
      tileMenuChild: this.tileMenu,
    };
  },
};
</script>