編輯:解決方案將不同的變量連接到mapStateToProps。Redux - 相同的減速器,容器和組件產生不同的結果
我在使用react-redux應用程序時遇到了一些麻煩,我不確定我做錯了什麼。
源代碼可以是found here。
Alphabetical
動作和減速器似乎工作正常,但與Duplicate
邏輯不同,詞彙表不會在字母按鈕切換時重新顯示。我猜這是因爲我沒有正確地將它掛在商店/派送上。
我創建了Duplicate
reducer,action,容器,組件,一旦我得到那些工作,我將代碼複製到Alphabetical
文件。除了變量名,代碼應該是相同的,但是當我在createStore中分別運行每個reducer時,duplicates
正常工作,而alphabetical
則不正確。
你可以看到Alphabetical
按鈕應該如何在createStore函數中使用toggleDuplicates
(我還在弄清楚爲什麼組合reducers不起作用 - 也許這與問題有關?)。
的src/entry.jsx
變化allReducers到toggleDuplicates
或toggleAlphabetical
let store = createStore(
allReducers,
initialState,
compose(
applyMiddleware(createLogger())
)
);
要運行,cd進入該目錄,然後運行npm install
,npm run server
預期的行爲是Duplicate
和Alphabetize
按鈕將在切換時使用正確的值更新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;
當您創建商店時,請避免initialState,只需將它傳遞給您的減速器即可。 – Hosar