问题标签 [setstate]

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 回答
2338 浏览

javascript - React 方法中的多个 setState() 调用:如何使其“同步”工作

所以我在我的 React 应用程序中遇到了一个问题,我遇到了一个特定的情况,我需要setState()在一个方法中进行多次调用,然后在设置状态让代码运行。下面的代码是一个用于在网站上添加帐户的对话框。

问题出在handleSubmit()方法上,我需要检查用户是否在用户名和密码字段中输入了某些内容,并且密码和确认密码字段是否匹配。如果他们没有,我会在需要通过状态更改的字段中添加错误文本。然后我尝试查看状态以查看是否有任何错误。

不幸的是,正如我很快发现的那样,该setState()函数是异步的,这意味着在我最终检查之前状态不会改变。我在谷歌上搜索并搜索了一种在执行代码之前等待状态改变的方法,但结果是空的。我现在已经解决了这个问题,并认为我会把它放在 Stack 上,这样其他人可能会从我提出的方法中受益。我还想知道我正在做的任何利弊,或者任何可能会更好的建议。

当我四处搜索时,我发现了一种发送回调的方法,setState()如图所示:setState(data, callback). 起初我不认为这对我有用,因为我有多个setState()电话。但是,我意识到我可以将该handleSubmit()方法转换为使用三元组的单个setState()调用。像这样:

匿名回调函数将在状态更改后执行,让我的检查工作。

我预见到这种方法的唯一问题是嵌套三元组,因为如果需要它们可能会变得非常混乱。这可能对我的程序有任何不利影响吗?或者我可以解决这个问题的更好方法?

我希望我的解决方案帮助了一些人。:D

0 投票
3 回答
684 浏览

javascript - 警告:setState(...):只能更新已安装或正在安装的组件

我无法摆脱这个错误。当我从数组中删除一项并更新状态时,就会发生这种情况。

经过一些调试,我发现如果我重新加载应用程序,直接进入此屏幕并删除,错误不会显示。但是,如果我导航到此屏幕,返回,然后再次转到此屏幕并删除,则会出现错误。如果我加载屏幕 10 次,我会得到(30)这样的错误。

我的猜测是,当弹出路由返回仪表板时,我没有关闭 firebase 连接。或者我使用的导航器没有正确卸载场景。或者 deleteRow() 函数有问题

我真的不知道我还能做什么......同样的问题遍布整个网络,但似乎不适用于我的场景。

0 投票
0 回答
418 浏览

javascript - React setState 渲染 3 次

伙计们,我正在使用 React 并且有一个问题:我正在从 json 中制作一组数据,当我在构造函数中执行 setState 时,它​​会渲染三遍。第一次和第二次我得到一个空数组,第三次我得到一个包含我需要的数据的数组。所以,问题是,如何仅从第三次渲染中获取该数据,或者如何优化我正在使用的方法?

这是我的构造函数(道具){

第一个和第二个效果图

第三次渲染

0 投票
1 回答
364 浏览

user-interface - 在 Autoit GUI 中显示或隐藏编辑控件

我想根据是否选中单选按钮来显示或隐藏编辑控件。以下Autoit代码在语义上显示正常但不起作用。有人可以帮忙吗?谢谢

0 投票
6 回答
16675 浏览

javascript - 更改 a 上的值时的 setState