如果将第二个参数作为数组传递并在内部放置空对象,为什么useEffect会产生不定式循环

Petrik-a-dost

我有一个带有 API 过滤参数的对象,这个对象我传递给 useEffect。

    let dataForFilter = typeof defaultFormData[someKey] !== 'undefined'
    ? defaultFormData[someKey]
    : {};

    for (let key in props.route.params) {
        if (props.route.params.hasOwnProperty(key)) {
            dataForFilter[key] = props.route.params[key];
        }
    }

    useEffect(() => {
        async function fetchData() {
            const body = {
               ...dataForFilter,
            };
            loadData(url, body);
        }
        fetchData();
    }, [dataForFilter]);

默认情况下,对象是空的,但是如果我将数组中的空对象作为第二个参数传递,这会导致无限循环。我不明白为什么?请有人解释一下为什么以及如何解决。

一定的表现

每次函数运行时,它都会在这里创建一个新的空对象:

let dataForFilter = typeof defaultFormData[someKey] !== 'undefined'
    ? defaultFormData[someKey]
    : {};

所以依赖数组的值在每次渲染时都会改变,如果defaultFormData[someKey]不存在的话。空对象不等于自身。

console.log([{}] === [{}]);
console.log({} === {});

而是在函数外部创建对象,以使其引用稳定。

const emptyObj = {};
const MyComponent = ({ defaultFormData }) => {
  // ...
  let dataForFilter = typeof defaultFormData[someKey] !== 'undefined'
    ? defaultFormData[someKey]
    : emptyObj;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Javascript

React Hooks-0与空数组作为useEffect中的第二个参数

来自分类Dev

该Prolog谓词中的第二个参数是什么?为什么它是空的?

来自分类Dev

为什么将await运算符用于方法的第二个参数会影响第一个参数的值?

来自分类Dev

将tr的结果作为awk中的第二个参数传递

来自分类Dev

样式化的组件-将对象作为抛光功能的第二个参数传递

来自分类Dev

什么对性能更好?不定式循环是否if或normal循环?

来自分类Dev

为什么将代码包装到没有第二个参数且没有任何清理内容的“ useEffect”中?

来自分类Dev

当将空数组作为第二个参数传递时,React Hook useEffect缺少依赖项

来自分类Dev

将第二个参数传递给函数

来自分类Dev

为什么第二个for循环不执行?

来自分类Dev

在具有对象(第二个参数)的数组(第一个参数)上使用for循环迭代

来自分类Dev

返回作为第二个参数传递的数组中第一个参数的索引的函数

来自分类Dev

即使提供了第二个参数,useEffect钩子也会运行无限循环

来自分类Dev

当我将0作为getline的第二个参数传递时会发生什么?

来自分类Dev

为什么第二个for循环未运行?

来自分类Dev

为什么第二个for循环不执行?

来自分类Dev

将“值类型”作为默认的第二个参数传递给模板

来自分类Dev

Angular指令中第二个参数作为数组的作用是什么?

来自分类Dev

如果第二个参数是LPWSTR,则Win32 API Visual C ++ ReadFile()函数将产生乱码

来自分类Dev

是否需要第二个“ for”循环,如果需要,为什么?

来自分类Dev

如何在内部联接中选择第二个最小值?

来自分类Dev

为什么它适用第二个参数?

来自分类Dev

如何将第二个参数作为可选参数传递给 LUMEN 中的路由?

来自分类Dev

函数第二个参数作为条件传递?

来自分类Dev

通过传递一个空数组作为第二个参数,使用“useEffect”钩子只运行一次代码,但是 ESLint 抱怨空数组

来自分类Dev

React.js“useEffect”不定式循环

来自分类Dev

如何将数组的值作为第二个参数传递给 awk 的 split 函数?

来自分类Dev

Postgresql 不定式循环

来自分类Dev

为什么将新对象添加到数组列表中会覆盖数组列表中对象的第二个参数?

Related 相关文章

  1. 1

    React Hooks-0与空数组作为useEffect中的第二个参数

  2. 2

    该Prolog谓词中的第二个参数是什么?为什么它是空的?

  3. 3

    为什么将await运算符用于方法的第二个参数会影响第一个参数的值?

  4. 4

    将tr的结果作为awk中的第二个参数传递

  5. 5

    样式化的组件-将对象作为抛光功能的第二个参数传递

  6. 6

    什么对性能更好?不定式循环是否if或normal循环?

  7. 7

    为什么将代码包装到没有第二个参数且没有任何清理内容的“ useEffect”中?

  8. 8

    当将空数组作为第二个参数传递时,React Hook useEffect缺少依赖项

  9. 9

    将第二个参数传递给函数

  10. 10

    为什么第二个for循环不执行?

  11. 11

    在具有对象(第二个参数)的数组(第一个参数)上使用for循环迭代

  12. 12

    返回作为第二个参数传递的数组中第一个参数的索引的函数

  13. 13

    即使提供了第二个参数,useEffect钩子也会运行无限循环

  14. 14

    当我将0作为getline的第二个参数传递时会发生什么?

  15. 15

    为什么第二个for循环未运行?

  16. 16

    为什么第二个for循环不执行?

  17. 17

    将“值类型”作为默认的第二个参数传递给模板

  18. 18

    Angular指令中第二个参数作为数组的作用是什么?

  19. 19

    如果第二个参数是LPWSTR,则Win32 API Visual C ++ ReadFile()函数将产生乱码

  20. 20

    是否需要第二个“ for”循环,如果需要,为什么?

  21. 21

    如何在内部联接中选择第二个最小值?

  22. 22

    为什么它适用第二个参数?

  23. 23

    如何将第二个参数作为可选参数传递给 LUMEN 中的路由?

  24. 24

    函数第二个参数作为条件传递?

  25. 25

    通过传递一个空数组作为第二个参数,使用“useEffect”钩子只运行一次代码,但是 ESLint 抱怨空数组

  26. 26

    React.js“useEffect”不定式循环

  27. 27

    如何将数组的值作为第二个参数传递给 awk 的 split 函数?

  28. 28

    Postgresql 不定式循环

  29. 29

    为什么将新对象添加到数组列表中会覆盖数组列表中对象的第二个参数?

热门标签

归档