我已经收到了
错误:“未捕获的RangeError:超出最大调用堆栈大小”
我怀疑我的组件WillUpdate方法中的这个代码块是原因,因为我只是在添加代码后才收到错误。我在这里做错了什么吗?
componentWillUpdate(nextProps, nextState) {
...
if (nextProps.show) {
for (var i = 0; i < this.props.data.actions.length; i++) {
if (this.props.data.actions[i].assignedTo !== this.state.userId && this.state.showActions === true) {
this.setState({ showActions: false })
}
if (this.props.data.actions[i].assignedTo === this.state.userId && this.state.showActions === false) {
this.setState({ showActions: true })
}
}
}
...
}
当单击一个按钮时,nextProps.show被设置为true,然后它检查被分配一个动作的人是否与登录的用户相同,然后它将showActions状态设置为true。如果满足代码中的条件,此状态用于显示/隐藏行
根据React组件WillUpdate文档:
请注意,您不能在这里调用this.setState();也不应该在组件WillUpdate()返回之前执行任何其他操作(例如分派Redux操作)来触发对React组件的更新。如果您需要更新状态以响应道具更改,请改用组件WillReceiveProps()。
您应该将代码移动到< code > componentWillReceiveProps 方法中。
此状态
尚未在组件更新中发生突变
。
作为重用,在使用< code>this.setState后,使用< code>nextState而不是< code>this.state来验证值是否正确:
componentWillUpdate(nextProps, nextState) {
...
if (nextProps.show) {
for (var i = 0; i < this.props.data.actions.length; i++) {
if (this.props.data.actions[i].assignedTo !== this.state.userId && nextState.showActions === true) {
this.setState({ showActions: false })
}
if (this.props.data.actions[i].assignedTo === this.state.userId && nextState.showActions === false) {
this.setState({ showActions: true })
}
}
}
...
}
由于您正在设置状态
,这将再次调用组件WillUpdate
,因此此递归调用是堆栈超出的原因。
与组件WillMount()
不同,我们不应该在组件WillUpdate()
中调用this.setState()
。我们不调用this.setState()
的原因是该方法触发了另一个组件WillUpdate()
。如果我们在组件WillUpdate()
中触发状态更改,我们将最终陷入无限循环。
我在react中工作,基本上我想做一个带工具提示的按钮,现在我正在做工具提示。我正在更改css显示属性,以使它在鼠标进入和离开时可见或不可见。但是有一个错误,我不知道该怎么办... 这是我的代码: 在控制台中,我收到了这个错误: 我找不到问题出在哪里。我知道这可能是关于调用一个函数,而这个函数又调用另一个函数。但是我在代码中看不到这样的东西,我不确定是否都是这样。谢谢帮助:)
我在玩React,我得到了我想要的功能,但是由于某个地方的无限循环,它非常慢。我相信它在组件生命周期方法中,但我不知道如何重新格式化下面的代码,使其具有相同的功能,但没有无限循环。任何关于最佳实践的建议都将不胜感激。
我是React的初学者。js并试图理解道具的概念 我有两个组件 - UserData.jsx UserDataResult.jsx 在UserData中。jsx我用过这个。用户记录的状态。我想通过子组件UserDataResult.jsx显示此记录。 不知道我做错了什么,所以我在控制台日志中得到错误。 错误是:未捕获的范围错误:超出最大调用堆栈大小 代码: **UserData.jsx** **用
下面的代码抛出了问题标题中提到的堆栈溢出。我正试图让一个方框阴影以脉冲效果显示在一个圆形图像的周围。有人能指出递归吗?我是一个Javascript新手,看不出来。谢谢你。 断续器 CSS 脚本
我刚刚开始使用角度2。所以我尝试使用Web服务从数据库显示类别。 这是我的论坛.服务.ts文件 forum.component.ts: forum.component.html: 请帮忙,先谢了
问题内容: 我正在做反应,基本上我想用工具提示制作一个按钮,现在我正在制作工具提示。我正在更改css display属性,以使其在鼠标进入和离开时不可见。但是有一个错误,我不知道该怎么办… 这是我的代码: 在控制台中,我收到此错误: 我找不到问题所在。我知道这可能与调用一个函数有关,后者又调用另一个函数。但是我在代码中看不到这样的东西,而且不确定是否全部。感谢帮助 :) 问题答案: 每当您看到从函