在扩展组件之间传递数据或组件的调用方法

在扩展组件之间传递数据或组件的调用方法

问题描述:

我有主要组件在Created()方法中获取用户列表。主要组件扩展了两个组件。在这种情况下,创建的方法会在每次创建扩展组件时调用。所以我有额外的用户访问列表调用。目标是一次抓取用户并将其传递给扩展组件。在扩展组件之间传递数据或组件的调用方法

例如:

https://jsfiddle.net/apokjqxx/45/

在示例中,我们可以看到,主要成分的Created()方法称为两个时间,但需要一个时间和数据传递到扩展组件。什么是最好的解决方案?

每个扩展组件都是一个不同的对象实例,这就是为什么Created()和fetch被执行两次。

您需要的是另一段代码,用作您的项目列表的存储(缓存),这段代码应该实例化一次并在您的组件之间共享。

Vuex可能是为“一段代码”一个不错的选择

+0

我想过一个存储和另一段代码。也许使用道具...... Vuex很好,但我想尝试通过清晰的VueJs来解决它。谢谢 – maxxdev

如果您mathphysics组件共享相同的数据,甚至有很多共同的模板,为什么不能让他们一个组成部分?这将解决您的重复抓取的问题,你可以很容易地通过一个v-for包裹当前模板重新安排你的模板,并使用

data() { 
    return { 
     lists: [ 
      {course: 'math', people: ['mike', 'arnold', 'tony']}, 
      {course: 'physics', people: ['mike', 'arnold', 'tony']} 
     ] 
    }; 
} 

为您的数据。

+0

我需要不同的组件来为用户使用不同的逻辑。对于每个组件,也将在Tabs中使用自定义模板。 – maxxdev

+0

你的例子有点不正确。我有用户名单(10k),他们应该被课程分开,并为每个课程创建模板。谢谢 – maxxdev

+0

@ user3816475不完全清楚您的情况,但您可以尝试[slot](https://vuejs.org/v2/api/#slot)以使父组件能够将自定义模板插入到孩子的预定义位置。 –