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

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循环,如何轻松填充数组并获得预期的输出?

  • 问题内容: 我打算在窗口内显示28x28像素的图像。像素的值为“ 0”,因此我希望它显示一个带有28x28黑色正方形的窗口。但是没有图像显示。也许数组的数据(我不确定像素值是否必须为0到255之间的整数)必须是其他数据才能显示图像。谢谢! 公共课程ASD { 问题答案: 返回栅格的 副本 。也许如果在修改栅格后调用,您将看到结果。 同样,应该给setPixels一个足够大的数组,以填充栅格的所有波