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

reactjs - setState 未完成

在未触发 API 调用 setState 之后。第一个 console.log 语句按预期工作并显示所有正确的数据,但从未触发 setState 的回调并且不会更新状态。我让它像这样坐了10多分钟。

我没有控制台错误。

奇怪的是,当我在应用程序的另一部分工作时,它神奇地又开始工作了,我不知道为什么。我错过了一些明显的东西吗?

编辑:

console.log()有趣的是,如果我从回调中删除第二个setState()并简单地将它放在调用它之后setStat()仍然没有触发。

0 投票
1 回答
154 浏览

react-native - React Native - 第二次挂载时出现 setState 警告

请检查以下代码:

信息:SEARCH_TEAMS Event由另一个Component.

如果我第一次渲染组件一切正常。但是,如果我弹出页面并在此页面上再次导航,我会收到以下警告:

警告:setState(…) 只能更新挂载或挂载的组件…</p>

0 投票
2 回答
474 浏览

javascript - this.setState 不重新渲染视图 ReactJS 和 Ruby on Rails

我有一个带有两个 reactJS 组件(不是父/子)的 rails 应用程序,它们当前通过全局事件 Pub/Sub 系统进行通信。

但是,当我跑步时,this.setState({ items: this.props.items })我收到了消息Cannot read property 'items' of undefined

人们可以就我为什么会收到此错误提供任何帮助将不胜感激。

我的基本设置是:

BasketContainer - 订阅了两个事件

ProductItem - 添加到购物篮事件发布者

BasketItem - 从篮子发布者中删除

0 投票
1 回答
1538 浏览

javascript - 在 Android 上反应原生 setState() 和动画

我正在为我的 react-native 应用程序开发类似“toast”的组件。它适用于 iOS 模拟器,但它不会在我的 android 设备(Galaxy Note 2)上更新动画之前的状态。这是我的组件的渲染器:

this.animatedValue 在构造函数上是这样创建的:

而且我有一个 show 方法可以更新状态this.setState以设置消息和颜色,在开始动画之前,Animated.timing我在动画结束时有一个回调,它会启动超时以隐藏 toast,正如我所说的在 iOS 上一切正常,但是在 android 上,第一次显示 toast 时没有文本(我初始化message为空字符串),第二次应该显示它,显示应该显示的最后一个 toast 的消息和颜色。前任。您登录失败,我在 adb 控制台上看到正在启动失败的登录消息,但我仍然看到一个带有绿色的空消息,然后我进行了正确登录,我在 adb 控制台中看到了成功登录消息正在启动,但我仍然看到带有红色的失败消息:\。

我认为它可能是在动画开始之前没有完全更新的状态更改(有时我已经看到带有一条消息的 toast 启动,并且在动画的中间/结束时它突然改变了颜色和文本),所以我'我首先尝试在setState回调上启动动画,据说是在状态完全改变并渲染组件后调用的,但我仍然看到空消息 toast,讽刺的是,就在动画启动之前,我在我的 adb 控制台上看到记录的新状态并且已正确更新,但未呈现:\,我还尝试在启动显示动画之前在setStatewith this.forceUpdateall 之后强制更新,但没有成功,我仍然收到空消息并且仍然在控制台日志中看到正确的状态: \,我什至尝试在setStateand之后设置超时forceUpdate在动画之前给反应环境时间来渲染组件或其他东西,但我仍然得到空消息和正确的状态显示在我的控制台日志 D 上:

我知道这一定是显而易见或愚蠢的,但我就是想不通:(,我已经使用 react native 2~3 周了,我知道 javascript 很长时间了,我想我明白了对 react native 组件生命周期的了解不多,但仅此而已,我还是 react native 的新手,所以任何帮助将不胜感激,谢谢 xD。

0 投票
1 回答
1127 浏览

javascript - JavaScript | ReactJS:父状态更改不触发子道具更新

父 setState 触发器render(),但子组件的道具是静态的

这很简单。我有<Parent />一个状态属性和一个处理程序。父级将属性和处理程序都传递给子级。

孩子有一个按钮并调用它自己的处理程序,该处理程序包装了父母的处理程序。一个布尔值 ,isNew被传递给 Parent - Parent 调用this.setState({ isNew: isNew })

Parent 总是调用renderisNew在 Parent 的 HTML 中输出显示一切都是正确的。但是,<Child isNew={this.state.isNew} />从不输出正确的值this.props.isNew——它总是在 ParentgetInitialProps方法内部的 Parent 中初始化什么值。

我刚进入这个项目,但我不相信我们正在实施 Flux 或 Redux。我的假设是,开箱​​即用的 React应该重新渲染其 props 设置为 parent 的 state 的所有孩子

换句话说,如果我有以下情况:

当父级 [from a state-change] 重新渲染时,所有依赖父级状态的子级也应该重新渲染,同时将父级的新状态封装在其 props 中;假设一个孩子道具<Child property={this.state.property} />

我在这里完全错过了一些基本的东西吗?

请让我明白这一点:)

谢谢

0 投票
11 回答
277542 浏览

reactjs - ReactJS:警告:setState(...):在现有状态转换期间无法更新

我正在尝试从我的渲染视图重构以下代码:

到绑定在构造函数中的版本。原因是渲染视图中的绑定会给我带来性能问题,尤其是在低端手机上。

我创建了以下代码,但我不断收到以下错误(很多)。看起来应用程序进入了循环:

下面是我使用的代码:

0 投票
1 回答
674 浏览

react-native - React-Native error this.setState is not a function

I'm using below lib to implement a callback (onSuccess, onError) for every ApiRequest. But I have a problem when update state when event is trigged. I tried to remove all stuffs just keep the base logic. I don't know why it error. Lib: https://www.npmjs.com/package/react-native-simple-events

Below is my code

ApiRequest.js

Login.js

let me know if you need more information

0 投票
2 回答
18202 浏览

reactjs - 响应数组中的更改状态(for循环)

我有一个有航班的州,我有一个滑块来更改最高价格以更改航班元素的可见性。

这段代码在状态的根目录中添加了一个状态为 true 的未定义字段。除了使用计算字段之外,我找不到任何最佳实践。但我也不能让计算场工作..

有人可以帮我吗?

0 投票
2 回答
210 浏览

react-native - 尽管语法正确,setState 在现有状态转换期间无法更新

我一直在努力纠正代码中的任何语法错误,但我继续收到“setState Cannot Update during Existing State”错误。我已经参考了类似的线程,但答案似乎并没有很好地适用于我的情况(或者解决方案让我失败了)。

这是我定位为有问题的代码:

特别是,代码在 render 和 startSearch 函数中挑出了函数的调用:

在此处输入图像描述

任何帮助将不胜感激。

0 投票
3 回答
14602 浏览

javascript - React setState 在第一次尝试时不起作用,但在第二次尝试时起作用?

我在handleSelection单击按钮时调用了该方法,但是,如果我在状态未设置时单击该按钮this.setState({selectedFoods: newSelections});。该方法中的其他所有内容都正确执行(正如我的各种 console.logs 告诉我的那样:))。当第二次单击该按钮时,该方法中的所有内容都会再次执行并且可以setState正常工作。

为什么除了我的setState功能之外的一切都在第一次正确执行?为什么它在第二次点击时起作用?