vue子组件复用,主要是在created中获得外部搜索接口并且渲染页面,每次使用都是不同的接口 如何进行复用?

新手上路,请多包涵

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>

不知问题是否描述清楚,简单说就是初学者试图写 豆瓣移动端 在电影界面 那三个拖拽上复用的问题,这三个接口到底要如何复用到组件中呢???

阅读 3k
2 个回答

把接口url通过props传递进去

用vuex来写试试,把三个不同接口取数据的方法封装,然后写在actions里,这样通过commit 传递到motstions 在传递到state,在通过getters 来用,数据是共用的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题