gpt4 book ai didi

javascript - 未捕获的范围错误 : Maximum call stack size exceeded - ReactJS

转载 作者:行者123 更新时间:2023-11-30 19:56:28 27 4
gpt4 key购买 nike

我已经检查了所有像我这样的问题,但找不到任何对这种情况有用的东西。

请帮忙。

这是我的功能:

renderFields() {
if (this.props.field) { // some prop

return (
<SelectBox
className="selectbox"
value={this.state.selectId}
/>
);
}
}

使用地点:

renderAllFields() {
<div>{this.renderFields()}</div>
}

这会生成以下消息:

Uncaught RangeError: Maximum call stack size exceeded

这可能与 React 中的生命周期有关,但我不确定。

例如当我检查时:

componentDidUpdate = (prevProps) => {
console.log('prevProps', prevProps);
console.log('this.props', this.props);
};

它们看起来一样。

谢谢。

编辑:

render() {
return (
<div>
<Formsy.Form
ref="form"
onChange={this.checkForChange}>
<Grid fluid className="container__seven--holder">
{this.renderAllFields()}
</Grid>
</Formsy.Form>
</div>
)
}

checkForChange() 使用以下方法从表单获取值并设置更新状态:

this.setState(updatedState);

我认为问题出在每次更改时更新。即使我移动鼠标,它也会不断更新。

最佳答案

由于您没有分享足够的信息或完整的组件代码,我怀疑可能是以下原因

改变

   <Formsy.Form
ref="form"
onChange={this.checkForChange}>
<Grid fluid className="container__seven--holder">
{this.renderAllFields()}
</Grid>
</Formsy.Form>

如果您期望 checkForChange 函数的事件,下面的解决方案将起作用

    <Formsy.Form
ref="form"
onChange={e => this.checkForChange(e)}>
<Grid fluid className="container__seven--holder">
{this.renderAllFields()}
</Grid>
</Formsy.Form>

如果您不希望 checkForChange 函数发生事件,则以下解决方案可行

    <Formsy.Form
ref="form"
onChange={() => this.checkForChange()}>
<Grid fluid className="container__seven--holder">
{this.renderAllFields()}
</Grid>
</Formsy.Form>

关于javascript - 未捕获的范围错误 : Maximum call stack size exceeded - ReactJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53934524/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com