问题标签 [use-state]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8187 浏览

reactjs - 使用 useEffect() 钩子在 Jest 中测试函数

我基本上是在学习 Jest,我必须为 useEffect() 钩子编写一个测试用例,该钩子基于 flag[counter] 呈现,并在内部检查字段是否存在 localStorage 值。

有人可以帮助我编写测试用例/为内部调用 isLocalstoragePresent() 方法的 UseEffect 提供指导。提前致谢。

0 投票
3 回答
297 浏览

javascript - useState 变量不是删除函数中的最新版本,React

我有一个包含问题字段的 div 列表。对于每个按钮单击,我都会添加一行新的问题字段,并在状态中记住整个列表以及有多少行。我尝试添加一个删除按钮,但是当我的删除功能时,状态变量的值似乎是从创建行时记住的。我该如何解决这个问题,以便我可以访问 HandleDelete 函数中的完整列表?

0 投票
1 回答
63 浏览

javascript - Javascript和React在数组中设置数组状态并使用扩展运算符

我使用 react 并想创建一个项目数组,然后使用扩展运算符,但我在设置它时遇到了麻烦。

收到错误:TypeError:传播不可迭代实例的无效尝试

我有一个按钮,它将添加额外的集合数组newArraymediaArray. 但是因为我试图遍历mediaArray,所以我想确保正确的集合进入正确的 mediaArray。我希望这是有道理的

所以我最终会有 1 组 mediaArray 和 1 组

另一个带有另一组集合的 mediaArray

等等...

最终我想要newArray:

0 投票
2 回答
1192 浏览

javascript - 即使延迟(5 秒)调用函数后,函数内部的反应状态也不会改变

在反应中我正在使用功能组件,我有两个功能(getBooks)和(loadMore)

getBooks从端点获取数据。但是,当我在函数loadMore内部单击按钮时调用函数getBooks(loadMoreClicked)没有改变,即使在延迟(5秒)调用它之后,它也会使用以前的状态。但是当我loadMore再次调用时,状态会发生变化,一切正常。

有人可以解释为什么最初调用 (getBooks) 时的 (loadMoreClicked) 没有更新,即使在延迟 5 秒后调用它也是如此。

0 投票
1 回答
2045 浏览

reactjs - React hooks,从 prop 声明多个状态值

一般来说,我对 React 和 React hooks 还是很陌生,

我正在为我的最终项目构建一个反应应用程序,我想让一些组件(本示例中的高级搜索)尽可能通用,这意味着我想传递“dataFields”并且组件应该使用唯一的状态值更新源自那些数据字段。

我知道我可以使用一般状态并使用数组将更改存储在其中,但我读到这是不好的做法。

这就是我现在所拥有的:

我尝试使用它来实现相同的目标:

正确的做法是什么?有吗?

0 投票
3 回答
179 浏览

reactjs - 设置状态时如何将方法应用于字符串,反应钩子

我试图在设置字符串时拆分它。React 给出错误“TypeError:未定义”,如果我尝试对其应用方法(如 string.split("_"))

但如果我不尝试应用该方法,则字符串会正确显示。锄头可以实现在设置状态之前应用方法吗?

另外,我是否正确使用了 useEffect ?(3次,每次等待一个setSate申请另一个)

0 投票
1 回答
2640 浏览

reactjs - 如何在createContext中为TypeScript初始化useState的set函数?

我有一个Provider通过两个提供状态变量及其相应设置器的contexts.

Provider看起来像这样:

通过自定义钩子,我使setBookedBatch其他组件可用:

尝试使用该setBookedBatch功能时,在给定组件中出现以下错误:

错误:

由于函数的setteruseState是我没有创建的函数,所以创建上下文的时候不知道怎么初始化:

这样 TypeScript 就不会抱怨了。

  1. 如何知道 setter 函数的初始值?
  2. 如果我不提供任何类型,如何避免 TS 抱怨 null 值?
0 投票
1 回答
62 浏览

javascript - 为什么我收到以下 React Native 警告:Can't perform a React state update on an unmounted component

我正在尝试构建一个 React Native 应用程序,但对 React/RN 生态系统来说还是个新手,所以我可能只是误解了我遇到的问题的一些明显问题。

我有一个应用程序,其中很多页面的结构如下:

NavComponent加载具有以下元素的可切换导航菜单TouchableOpacity

我遇到的问题(也许这不是问题,而是 React/RN 的工作原理)是,如果我从屏幕 #1 开始,打开导航,转到屏幕 #2,再次打开导航,然后返回到屏幕#1,即使屏幕#1 再次出现,屏幕#1 的实际渲染函数似乎也没有被再次调用,因为NavComponent这是每个屏幕渲染的一部分,当我尝试再次从屏幕 #1 打开导航,我收到以下警告:

警告:无法对未安装的组件执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要解决此问题,请取消 %s 中的所有订阅和异步任务。%s,一个 useEffect 清理函数...

同样,也许我的应用程序一开始就有缺陷,但本质上,当我从导航从一个屏幕转到另一个屏幕时,我总是希望新屏幕从头开始重新渲染(包括最初的 Ajax 数据调用) .

这是屏幕渲染函数的一个更充实的示例(它们都遵循相同的基本模式):

例如,如果我console.log在上面的渲染函数的开头添加了一个,它在屏幕第一次加载时被调用,但是如果我转到屏幕#2,然后通过导航组件返回到屏幕#1,则console.log不是'不再输出。为什么?

对于它的价值,我正在使用标准navigation.navigate('ScreenName')NavComponent一个屏幕转到另一个屏幕。

任何有关如何修复警告(和/或更好地设计应用程序)的建议,以便我可以在每个页面上都有该导航,我们将不胜感激。谢谢你。

0 投票
2 回答
69 浏览

reactjs - useState 接收输入数据并发布到控制台

仍然是 React 的初级人员,我正在尝试检测来自前端的输入并使用 useState 收集输入数据并通过控制台发布。我遵循了 React 自己的教程,但我无法做到这一点。这可能是我忘记的小事,但我已经坚持了好几天了。请帮忙。

0 投票
1 回答
144 浏览

javascript - 通过对象搜索后响应组件的更新状态

我有一个从 reactIcons npm 包https://www.npmjs.com/package/react-icons输出的对象我正在使用 sanity studio从其中一个文件夹中导入所有内容import * as ReactIcons from 'react-icons/fa',我创建了一个文本输入搜索到的值并运行一个搜索函数,该函数对我从 reactIconsfa文件夹中获取的对象的值运行包含,并记录匹配的值。现在我想获取这些值并使用useState()Howerver 更新反应组件我收到以下错误Uncaught ReferenceError: setIcon is not defined,并且 SetIcon 是 useState 数组中的 setter 函数。到目前为止,这是我的代码