当前位置: 首页 > 知识库问答 >
问题:

React useReducer未显示数组中的值。减少

元修然
2023-03-14

我使用useReducer保存一些状态,如下面的代码所示,但它没有从array reducer函数返回值。

  let [entriesByEmployer, dispatchEntriesByEmployer] = useReducer(
    (state, action) => {
      const reducer = (employerEntries, entry) => {
        console.log("adding to employerEntries");
        employerEntries[entry.employerId] = employerEntries[entry.employerId] || [];
        employerEntries[entry.employerId].push(entry);
        console.log(employerEntries);
        return employerEntries;
      };
      return batchEntries.reduce(reducer, []);
    },
    []
  );

过程:

  • 当我单击屏幕上的按钮时,它会从数据库中获取信息
  • 该信息存储在batchEntries变量中
  • 当批次条目发生更改时,我使用useEffect由雇主触发DispatchEntries
  • 这会导致减速器运行

我知道内部减少函数会运行,因为如果我把它包装在控制台日志中,它会将我期望的数据输出到控制台。

console.log(batchEntries.reduce(reducer, []));

但是,当我返回reduce函数的结果时,当我检查组件时,React DevTools显示“Reducer:Array(empty)”

共有1个答案

宗翔宇
2023-03-14

问题在于减速器本身。因为我在分配数组键,所以它没有显示数组。相反,我把它变成了一个对象

js lang-js prettyprint-override"> let [entriesByEmployer, dispatchEntriesByEmployer] = useReducer(
    (state, action) => {
      const reducer = (employerEntries, entry) => {
        console.log("adding to employerEntries");
        employerEntries[entry.employerId] = employerEntries[entry.employerId] || [];
        employerEntries[entry.employerId].push(entry);
        console.log(employerEntries);
        return employerEntries;
      };
      return batchEntries.reduce(reducer, {});
    },
    {}
  );
 类似资料:
  • 我试图运行一个简单的node.js文件在我的终端。 它按预期工作,但输出返回如下: 我希望能够看到所有的值,而不是“…9901更多项目”,有人知道如何改变这种行为吗?

  • 我想分别找到数组数组中每个数组的第一个和第二个元素的最大数量: 当前方式返回每个数组中最大数的数组。如何返回第一个元素中最大的元素和第二个元素中最大的元素?预期结果将是:

  • 这是我的代码,当我执行时,我得到的只是一个空白窗口。首先,当我尝试执行时,我得到了这个错误: “无法对非静态字段面板进行静态引用” 所以我把它放在构造器中,但什么都不会显示。

  • 问题内容: 我想通过按下JFrame中的按钮来启动另一个JFrame。但是,如果按Button,它将显示JFrame,但其中不显示Buttons和Sliders。 } 第二个具有完全相同的构造函数。滑块和按钮不是静态的。在应显示“按钮”的位置,屏幕为黑色。 希望你能帮我 :) 编辑: 问题答案: 做你最后一件事… 另外,在添加新组件时,使用和鼓励容器更新其布局。 建议: 确保您的用户界面在EDT上

  • 试图找到用从23开始的一些值按降序填充数组的最简单方法。我有下面的代码,但没有得到我正在寻找的结果: 现在输出 预料之中 如果可能的话,没有for/while循环,如何轻松填充数组并获得预期的输出?

  • 我试图编写正确的查询,但它们显示的结果不正确。例如,我有表ABC: 在c栏中只能b_id 因为111在a_id10或11不是12我怎样才能找到它?我需要找到列C中发生(无效)值b_id的所有行,它们不在同一个a_id中。Sql(postgresql)不能正常工作,为什么?感谢任何帮助。 我的sql: