[英]Redux - Identical reducers, containers, and components are producing different results
编辑:解决方案是将另一个变量连接到mapStateToProps。
我的react-redux应用程序遇到了一些麻烦,我不确定自己做错了什么。
源代码可以在这里找到 。
Alphabetical
动作和减速器似乎正常工作,但与“ Duplicate
逻辑不同,切换“按字母顺序”按钮时,词汇表不会重新呈现。 我猜这是因为我没有正确地将其连接到存储/调度中。
我创建了Duplicate
reducer,action,容器,组件,一旦使它们工作,就将代码复制到了Alphabetical
文件中。 除了变量名之外,代码应该相同,但是当我在createStore中分别运行每个reducer时, duplicates
可以正常工作,而alphabetical
则不能。
您可以通过在createStore函数中使用toggleDuplicates
来查看Alphabetical
按钮的行为方式(我仍在弄清楚为什么合并化toggleDuplicates
不起作用-可能与问题有关吗?)。
src / entry.jsx
将所有toggleDuplicates
更改为toggleDuplicates
或toggleAlphabetical
let store = createStore(
allReducers,
initialState,
compose(
applyMiddleware(createLogger())
)
);
要运行,请cd进入目录,然后运行npm install
, npm run server
预期的行为是,“ Duplicate
和“ Alphabetize
按钮在切换时将使用正确的值更新GlossaryTable。 更新visibleWords
状态时,应重新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;
您正在创建一个称为words
的reducer,它实际上不是reducer,而是一个数组。
words
应该只是您商店中的数据,而不是reduce本身
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.