javascript - Redux - 相同的 reducer 、容器和组件产生不同的结果

标签 javascript reactjs redux react-redux

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

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

源代码可以是found here .

按字母顺序操作和缩减器似乎工作正常,但与复制逻辑不同,当切换按字母顺序按钮时,术语表不会重新呈现。我猜这是因为我没有正确地将其连接到商店/调度中。

我创建了Duplicate reducer 、操作、容器、组件,一旦我让这些工作起来,我将代码复制到Alphabetical文件中。除了变量名称之外,代码应该是相同的,但是当我在 createStore 中单独运行每个 reducer 时,duplicates 工作正常,而 alphabetical 则不然。

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

src/entry.jsx

将 allReducers 更改为 toggleDuplicatestoggleAlphabetical

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

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

预期的行为是,DuplicateAlphabetize 按钮在切换时将使用正确的值更新 GlossaryTable。当 visibleWords 状态更新时,GlossaryTable 应该重新渲染(在由toggleDuplicates/toggleAlphabetical 缩减器返回之后)。

src/containers/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 应该只是存储中的数据,而不是 reducer 本身

关于javascript - Redux - 相同的 reducer 、容器和组件产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41345791/

相关文章:

reactjs - 如果需要在子路由上进行 react ,则路由器reux提取资源

javascript - 如何在使用 jQuery 单击后仅追加一次数据

javascript - Moment JS - isAfter 返回 .isAfter 不是一个函数?

reactjs - 在 reducer 之后调用 Redux 中间件

reactjs - 为 Next.js 的应用程序目录中的所有页面添加逻辑的全局文件是什么?

javascript - 更新状态未在 UI 中正确反射(reflect)

javascript - 暂停和恢复 JQuery.animated 对象

javascript - 需要运行两次 Node.removeChild() 以删除节点

javascript - 仅在定义值时才内联设置 JS 对象的属性

JavaScript、Redux : array not taking value