【问题标题】:How to wrap the initialisation of an array in its own useMemo() Hook?如何将数组的初始化包装在它自己的 useMemo() Hook 中?
【发布时间】:2021-10-14 14:37:29
【问题描述】:

有人可以给出这个警告信息的解决方案吗?

137:7 警告 'slider1' 数组使 useEffect Hook(第 143 行)的依赖关系在每次渲染时都发生变化。为了解决这个问题,将 'slider1' 的初始化包装在它自己的 useMemo() Hook react-hooks/exhaustive-deps 中

138:7 警告 'slider2' 数组使 useEffect Hook(在第 143 行)的依赖关系在每次渲染时都会发生变化。为了解决这个问题,将 'slider2' 的初始化包装在它自己的 useMemo() Hook react-hooks/exhaustive-deps 中

我是新手,没有经验。如果有人能提供完整的解决方案就好了。

代码如下:

  const [nav1, setNav1] = useState(null);
  const [nav2, setNav2] = useState(null);
  let slider1 = [];
  let slider2 = [];

  useEffect(() => {
  setNav1(slider1);
  setNav2(slider2);
  }, [slider1, slider2]);

【问题讨论】:

  • 拜托,你能把你的代码分享给snack.expo.dev吗,你的代码会更容易帮助你
  • @Quintis 抱歉,但不能这样做

标签: reactjs react-native react-hooks


【解决方案1】:
const slider1 = useMemo(() => [], []);

就这么简单:)

也知道这里的问题,让 React 中的变量在每个滴答时重新创建自己,因为每个滴答都会重新运行 useEffect 你会有一个无限循环:) 你也可以将它用作状态默认值而不是 null :)

【讨论】:

  • 我已将其替换为“let slider1 = []”,但现在警告是 警告:'useMemo' 未定义 & 警告:'slider1' 是常量跨度>
  • @ALiRazaDarr:你必须先导入钩子:import React, { useState, useEffect, useMemo } from 'react';
  • @S1awek 谢谢!
【解决方案2】:

别忘了导入钩子

import React, { useState, useEffect, useMemo } from 'react';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 2017-08-31
    相关资源
    最近更新 更多