1.简单说就是在同一页面中,有三个地方的结构是一模一样的,只是接口不同,比如电影热映,排行和推荐.
2.子组件热映中获取数据的代码如下:
<script>
export default {
name: 'reying',
data () {
return {
blogs:[]
}
},
created(){
this.$http.get('/api/movie/in_theaters').then(function(data){
this.blogs = data.body.subjects;
})
}
}
</script>
然后在template中对blogs进行遍历操作,最后效果为轮播图或者拖拽.
3.之后做另外两个功能时使用到这个子组件,结构是一模一样的,只有created中的接口不一样,于是尝试复用,失败.
4.试图将把created写到父组件中,把接口数据复制给父组件data中的属性,然后通过v-bind传递给子组件的props:
父组件中这样写:失败.
<ReYing v-bind:blogs="blogs"></ReYing>
<ReYing v-bind:blg="blogs"></ReYing>
不知是不是v-bind互相影响了.
之后我把子组件复制了一份改了名字:
<ReYing v-bind:blogs="blogs"></ReYing>
<Top100 v-bind:blogs="blogs"></Top100>
页面没有报错,但是只渲染了第一个组件,没有渲染第二个组件.
父组件data中我是这么写的:
data () {
return {
blogs:[]
}
}
也试图写了两个不同的属性,blogs和blogs2,没有报错但也没有渲染,查看结构中发现是这样的,一脸懵逼....
<top100 blogs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"></top100>
不知问题是否描述清楚,简单说就是初学者试图写 豆瓣移动端 在电影界面 那三个拖拽上复用的问题,这三个接口到底要如何复用到组件中呢???
把接口url通过props传递进去