Redux - 相同的减速器,容器和组件产生不同的结果

时间:2016-12-27 13:07:06

标签: javascript reactjs redux react-redux

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

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

源代码可以是found here

Alphabetical动作和缩减器似乎正常工作,但与Duplicate逻辑不同,词汇表按钮切换时不会重新渲染。我猜这是因为我没有正确地将它连接到商店/发货。

我创建了Duplicate reducer,action,containers,components,一旦我完成了这些工作,我就将代码复制到了Alphabetical文件中。除了变量名之外,代码应该是相同的,但是当我在createStore中单独运行每个reducer时,duplicates工作正常且alphabetical不正常。

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

的src / entry.jsx

将allReducers更改为toggleDuplicatestoggleAlphabetical

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

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

预期的行为是DuplicateAlphabetize按钮将在切换时使用正确的值更新GlossaryTable。 GlossaryTable状态更新后visibleWords应该被重新呈现(在被toggleDuplicates / toggleAlphabetical redurs返回后。

的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 个答案:

答案 0 :(得分:1)

您正在创建一个名为 import java.util.*; import javax.swing.*; public class do_whilePassword { public static void main ( String [] args ) { String choice = ""; do { choice = JOptionPane.showInputDialog("Please enter in a password"); }while(choice != "John" ); } } 的缩减器,它实际上不是缩减器而是数组。

words应该只是商店中的数据,而不是减速器本身