编辑:解决方案是将另一个变量连接到mapStateToProps。

我的react-redux应用程序遇到了一些麻烦,我不确定自己做错了什么。

源代码可以是found here

Alphabetical动作和reducer似乎正常工作,但是与Duplicate逻辑不同,当按字母顺序按钮切换时,词汇表不会重新呈现。我猜这是因为我没有正确地将其连接到存储/调度中。

我创建了Duplicate减速器,动作,容器,组件,一旦使它们工作,就将代码复制到了Alphabetical文件中。除了变量名之外,代码应该相同,但是当我在createStore中分别运行每个reducer时,duplicates正常工作,而alphabetical则不行。

您可以通过在createStore函数中使用Alphabetical来查看toggleDuplicates按钮的行为(我仍在弄清楚为什么结合使用减速器不起作用-可能与问题有关吗?)。

src / entry.jsx

将allReducers更改为toggleDuplicatestoggleAlphabetical

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


要运行,请cd进入目录,然后运行npm installnpm run server

预期的行为是DuplicateAlphabetize按钮在切换时将使用正确的值更新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本身

10-06 12:12