2016-12-02 46 views
0

我有主要組件在Created()方法中獲取用戶列表。主要組件擴展了兩個組件。在這種情況下,創建的方法會在每次創建擴展組件時調用。所以我有額外的用戶訪問列表調用。目標是一次抓取用戶並將其傳遞給擴展組件。在擴展組件之間傳遞數據或組件的調用方法

例如:

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

在示例中,我們可以看到,主要成分的Created()方法稱爲兩個時間,但需要一個時間和數據傳遞到擴展組件。什麼是最好的解決方案?

回答

0

每個擴展組件都是一個不同的對象實例,這就是爲什麼Created()和fetch被執行兩次。

您需要的是另一段代碼,用作您的項目列表的存儲(緩存),這段代碼應該實例化一次並在您的組件之間共享。

Vuex可能是爲「一段代碼」一個不錯的選擇

+0

我想過一個存儲和另一段代碼。也許使用道具...... Vuex很好,但我想嘗試通過清晰的VueJs來解決它。謝謝 – maxxdev

0

如果您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)以使父組件能夠將自定義模板插入到孩子的預定義位置。 –

相關問題