问题标签 [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 投票
2 回答
9289 浏览

javascript - 无变异状态的反应过滤器方法

我目前的状态是这样的:

这是我从数组中删除对象的函数,试图避免变异状态。

它工作得很好,但在继续我的生活之前想知道它是否不是反模式

非常感谢!!

0 投票
2 回答
2960 浏览

reactjs - 诊断 RangeError:React KeyEscapeUtils 中超出了最大调用堆栈大小

背景

我们的 webapp 是使用官方 react-redux 绑定使用 React 和 Redux 编写的。此 Web 应用程序中使用的另一个主要库是PaperJS。我们最近将其转换为 Redux 应用程序,尽管它使用 React 有一段时间了。

问题

有时刷新(通常是每隔一次刷新)会导致

这是失败的 React 源代码:

在上下文中:

这可能表明我在代码中的某个地方滥用了 React,但由于堆栈跟踪不包含对我自己的任何代码的引用,我不确定要查找什么。这似乎是一个无限循环的重新渲染,我怀疑这可能是由于对setState.

问题

我的怀疑可能吗?鉴于我自己的代码库相当广泛,我该如何进一步诊断这个问题?这在 KeyEscapeUtils 中失败是什么意思?

0 投票
32 回答
391996 浏览

javascript - 如何在 React 中更新嵌套状态属性

我正在尝试使用这样的嵌套属性来组织我的状态:

但是像这样更新状态,

不起作用。如何正确地做到这一点?

0 投票
0 回答
486 浏览

animation - 调用 setState 后动画不起作用

描述

我想在动画开始之前进行一些更改,所以我在 Animated.spring().start() 之前调用了 setState(),我希望组件先更新然后动画,但动画根本没有开始。这是一个错误吗?如果没有,我该怎么办?

再生产

这是示例代码:

附加信息

  • React Native 版本:0.42.3
  • 平台:iOS
  • 开发操作系统:MacOS 10.12.4
  • 开发工具:Xcode 8.3、iOS 10.3
0 投票
4 回答
2653 浏览

reactjs - 我可以改变传递给 setState 函数的状态吗?

我知道我不应该直接在 React 中改变状态,但是当我使用函数时的情况如何:

修改传递的对象是错误的吗?

编辑:

事实证明,我们大多数人都错了。React文档现在清楚地说明了这一点:

state 是对应用更改时组件状态的引用。它不应该直接突变。相反,应该通过基于 state 和 props 的输入构建一个新对象来表示更改

感谢@Tomáš Hübelbauer 在评论中指出这一点。

0 投票
1 回答
265 浏览

reactjs - React - 无法获取 null 的属性 setState

我打算在我的 React 组件中从 Firebase 获取快照 val。我想根据组件的 init 获取值并附加一个监听器以进行更改。

0 投票
1 回答
2163 浏览

javascript - 调用 `this.setState()` 会中断对 componentWillReceiveProps 中道具的流类型检查

当我this.setState()在它之前调用一个我知道是字符串的道具时,我遇到了一个流错误。如果我将setState()调用移到使用道具的行之后,错误就会消失。我得到的错误是:

无效的

此类型与字符串的预期参数类型不兼容

不明确的

此类型与字符串的预期参数类型不兼容

这两个错误都发生在同一行代码上。

这是该组件的精简版本。见执行componentWillReceiveProps

只需切换最后两行的顺序即可componentWillReceiveProps修复它:

这只是 Flow 中的一个错误,还是我遗漏了什么?

0 投票
0 回答
29 浏览

javascript - 如何根据唯一的属性值从对象数组中检索单个对象

我终生无法根据每个对象的唯一标识符属性从对象数组中检索单个对象id。下面的代码只返回数组中的第一个对象。我觉得我接近解决方案,但不完全在那里。任何帮助将不胜感激。提前致谢。

数据结构如下:

0 投票
3 回答
1519 浏览

reactjs - React Native this2.state 错误

我正在尝试从 GET 请求(这是一个对象数组)中获取响应,并将其状态设置为数组“模板”,以便以后可以使用 this.state.templates 访问它,如下所示:

当我将 setState 行注释掉并且只在控制台记录响应时,我得到了正确的数组,所以我知道我的 fetch 是好的。但是,当我尝试运行 setState 行时,出现此错误:

解决此错误并能够在渲染中使用 this.state.templates 的解决方案是什么?

0 投票
2 回答
579 浏览

reactjs - 在渲染函数中使用 setState 的最大调用堆栈错误

我开始学习它,但找不到解决方案 -> 我有一个输入,当值超过 20 个字符时,我希望显示一个工具提示,其中包含输入的完整值。我已经全部建成并且可以正常工作。问题是我得到一个最大的调用堆栈错误,因为每次按键都会改变状态 - 我不确定最好/正确的方法......任何帮助将不胜感激

请参阅下面的代码,这是笔