【发布时间】:2018-12-26 16:23:21
【问题描述】:
我已经检查了所有类似我的问题,但找不到任何对这个案例有用的东西。
请帮忙。
这是我的功能:
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);
我认为问题在于每次更改都会更新。即使我移动鼠标,它也会不断更新。
【问题讨论】:
-
你能添加代码你在哪里打电话
renderAllFields()? -
请一分钟,编辑。
-
@SvenWritesCode,已更新,请查看上方。
-
我尝试重新创建您的课程here,它似乎没有出错。这似乎是
onChange函数和setState不断相互触发。我将从删除checkForChange()中的setState调用开始,看看它是否继续发生。 -
@SvenWritesCode,要不要继续聊天,真的很棘手?
标签: javascript html reactjs react-lifecycle