我似乎无法找出使用Typescript和类组件库将数组作为道具传递给Vue中组件的正确方法。 Following the official template,我尝试执行以下操作:
<script lang="ts">
import { Component, Vue} from 'vue-property-decorator';
const AppProps = Vue.extend({
props: {
propsMessage: String,
},
});
@Component({})
export default class Table extends AppProps {
mounted() {
console.log(this.propsMessage);
}
}
</script>
在某些模板中包括此内容:
<template>
<Table :propsMessage="['This', 'is', 'Bob']" />
</template>
确实有效,并提供以下输出:
[“此”,“是”,“鲍勃”]
我想要的是什么,但这肯定不是将数组作为prop传递的正确方法吗?我什至没有将propsMessage
定义为String[]
。经过研究,我发现this article提到有一个与此问题有关的bug。此问题已得到修复,并且已经merged just recently。因此,现在应该有一种方法可以执行此操作,但是我找不到任何有关如何正确执行此操作的文档。
答案 0 :(得分:0)
我认为您现在实际上将参数作为字符串而不是字符串数组传递了。我目前无法测试此代码,但可能会向正确的方向发展。让我知道您是否在实施它时遇到问题。
表组件(Table.vue):
<template>
<div>
<h1>This is my table component</h1>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop } from 'vue-property-decorator';
@Component
export default class Table extends Vue {
@Prop({ type: Array, required: true })
propsMessage!: string[];
constructor()
{
super();
console.log(this.propsMessage);
}
}
</script>
加载表组件的Home组件:
<template>
<my-table :propsMessage="myArray"></my-table>
</template>
<script lang="ts">
import Vue from 'vue';
import Component from 'vue-class-component';
import Table from 'WHERE-YOUR-TABLE-COMPONENT-IS-LOCATED'
Vue.component('my-table', Table);
@Component({
components: { Table }
})
export default class Home extends Vue {
myArray: Array<string> = [];
constructor() {
super();
this.myArray = ['This', 'is', 'Bob'];
}
}
</script>