2017-08-10 149 views
0

夥計們。商店的不同實例

我讓項目在瀏覽器中有選項卡。每個標籤都包含具有不同設置和這些搜索結果的用戶搜索。我找不到存儲這些數據的正確方法。

我想,我需要一些商店。因爲我只有一些標籤可以在不同的應用程序之間切換用戶,但在一個裏面。在其他情況下,我需要存儲兩次數據 - 記住當前狀態,並在某個「歷史記錄」縮減器中收集舊搜索。

對不起,這是我第一次在這裏體驗,如果有人能幫到你,請幫忙。

+0

你將永遠只有一個商店在減少。我認爲你在這裏試圖做的是在你的商店中有多個_sections_,這樣你的組件就可以只訂閱他們需要的部分。當您創建商店時,您在參數中使用defaultState。該defaultState可以包含這些多個部分,然後您的reducer可以分別修改這些部分。 – petithomme

+0

如果你願意,我可以給你寫一個快速的例子,說明它會是什麼樣的答案。 – petithomme

+0

@petithomme是的,請,如果可以的話,我會很感激 – maxolbraight

回答

1

您可以創建多個數據包含變量及其值的類。這些數據類然後可以在創建商店時被組合和使用。

此方法允許您在商店中擁有多個部分,並且您的每個部件都可以訂閱他們所需的部分。組件將擁有他訂閱的這些部分的數據,並在更新其中一個部分時重新呈現。

實施例的

數據類:

pageData.js

export const pageData = { 
    pageNumber: 1, 
    pageSize: 30, 
}; 

userData.js

export const userData = { 
    language: 'English', 
    timezone: 'ESTERN', 
}; 

創建商店時,這些類,然後組合:

store.js

import pageData from .../pageData; 
import userData from .../userData; 

const defaultState = { 
    pageData, 
    userData, 
}; 

export const store = createStore(rootReducer, defaultState)); 

你減速,需要修改pageData需要有名字pageData爲好。 userData也是如此。

完成所有這些設置後,您必須將mapStateToProps()組件添加到您希望它們訂閱的數據中。

例如,如果你希望你的PageComponent.js只知道pageData,則該組件,您將使用方法:

function mapStateToProps (state) { 
    return { 
    pageData: state.pageData 
    }; 
} 

我會建議尋找到redux documentation學習如何設置mapStateToProps()

當所有這些都完成後,您可以console.log(this.props)並看到您的數據部分在那裏,並很好地分開。

+0

這可能是一個難以迅速掌握的概念,如果您有任何疑問或錯誤,請不要猶豫,在此寫下它們。 – petithomme