我想在父组件上使用axios包创建一个ajax请求,并将返回的数组传递给子组件,以便它可以迭代数组并构建布局。我有以下代码。
父母就是这样:
<script>
import Box from './Box';
import axios from 'axios';
export default {
name : "messagespainel",
data: function() {
return {messsages: []} //should I use data to pass the ajax returned array to the child
},
props: ['messages'] //should I use props to pass the ajax returned array to the child
}
mounted :
{
axios.get('http://www.omdbapi.com/?s=star&apikey=mykey').then(response => { this.messsages = response.data.Search});
}
</script>
<template>
<div>
<box messages="this.messages"></box> My mind bugs at this point. How to refer to messages?
</div>
</template>
孩子是这样的:
<script>
export default {
name: "box",
props: ['mensagens']
}
</script>
<template>
<div>
<div v-for="message in messages" >
{{ message}}
</div>
</div>
</template>
<style>
</style>
答案 0 :(得分:4)
在您的父母中,没有必要将messages
声明为道具,它是您传递给孩子的数据属性。
import Box from './Box';
import axios from 'axios';
export default {
name : "messagespainel",
data: function() {
return {messages: []}
},
mounted() {
axios.get('http://www.omdbapi.com/?s=star&apikey=mykey')
.then(response => { this.messages = response.data.Search});
}
}
在模板中,您需要绑定属性。
<box v-bind:messages="messages"></box>
或
<box :messages="messages"></box>
孩子需要将messages
声明为财产。
export default {
name: "box",
props: ['messages']
}