2016-12-27 67 views
0

編輯:解決方案將不同的變量連接到mapStateToProps。Redux - 相同的減速器,容器和組件產生不同的結果

我在使用react-redux應用程序時遇到了一些麻煩,我不確定我做錯了什麼。

源代碼可以是found here

Alphabetical動作和減速器似乎工作正常,但與Duplicate邏輯不同,詞彙表不會在字母按鈕切換時重新顯示。我猜這是因爲我沒有正確地將它掛在商店/派送上。

我創建了Duplicate reducer,action,容器,組件,一旦我得到那些工作,我將代碼複製到Alphabetical文件。除了變量名,代碼應該是相同的,但是當我在createStore中分別運行每個reducer時,duplicates正常工作,而alphabetical則不正確。

你可以看到Alphabetical按鈕應該如何在createStore函數中使用toggleDuplicates(我還在弄清楚爲什麼組合reducers不起作用 - 也許這與問題有關?)。

的src/entry.jsx

變化allReducers到toggleDuplicatestoggleAlphabetical

let store = createStore(
    allReducers, 
    initialState, 
    compose(
     applyMiddleware(createLogger()) 
    ) 
); 

要運行,cd進入該目錄,然後運行npm installnpm run server

預期的行爲是DuplicateAlphabetize按鈕將在切換時使用正確的值更新GlossaryTable。當visibleWords狀態更新時,GlossaryTable應重新呈現(由toggleDuplicates/toggleAlphabetical減速返回後。

的src /集裝箱/ GlossaryContainer.js

這就是我想我可能不正確地佈線高達

const mapStateToProps = (state) => ({ 
    visibleWords: getVisibleEntries(
     state.words, 
     state.visibleWords, 
     state.toggleDuplicates, 
     state.toggleAlphabetical 
) 
}); 

const VisibleGlossary = connect(
    mapStateToProps 
)(GlossaryTable); 

export default VisibleGlossary; 
+1

當您創建商店時,請避免initialState,只需將它傳遞給您的減速器即可。 – Hosar

回答

1

狀態到調度。您創建了一個名爲words減速實際上並不是一個減速,但數組。

words應該只是在您的商店中的數據,而不是減速器本身

相關問題