编辑:解决方案是将另一个变量连接到mapStateToProps。
我的react-redux应用程序遇到了一些麻烦,我不确定自己做错了什么。
源代码可以是found here。Alphabetical
动作和reducer似乎正常工作,但是与Duplicate
逻辑不同,当按字母顺序按钮切换时,词汇表不会重新呈现。我猜这是因为我没有正确地将其连接到存储/调度中。
我创建了Duplicate
减速器,动作,容器,组件,一旦使它们工作,就将代码复制到了Alphabetical
文件中。除了变量名之外,代码应该相同,但是当我在createStore中分别运行每个reducer时,duplicates
正常工作,而alphabetical
则不行。
您可以通过在createStore函数中使用Alphabetical
来查看toggleDuplicates
按钮的行为(我仍在弄清楚为什么结合使用减速器不起作用-可能与问题有关吗?)。
src / entry.jsx
将allReducers更改为toggleDuplicates
或toggleAlphabetical
let store = createStore(
allReducers,
initialState,
compose(
applyMiddleware(createLogger())
)
);
要运行,请cd进入目录,然后运行
npm install
,npm run server
预期的行为是
Duplicate
和Alphabetize
按钮在切换时将使用正确的值更新GlossaryTable。当更新GlossaryTable
状态时,应重新呈现visibleWords
(由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;
最佳答案
您正在创建一个称为words
的简化器,它实际上不是简化器,而是一个数组。words
应该只是商店中的数据,而不是reduce本身