【发布时间】:2021-08-01 11:50:44
【问题描述】:
尝试根据从子级获取的值在父类中设置值时。我收到以下错误:
TypeError: this.setState 不是函数
父类
class Header extends React.Component {
constructor(props) {
super(props);
this.state = {
favoritecolor: "ParentValue RED"
};
}
nameParent(e) {
this.setState({favoritecolor: e})
console.log(e); // I am getting the value here from Child. But how to use setState ?
}
render() {
let variableName = '';
return (
<div>
<h1>Value from Child is {this.state.favoritecolor}</h1>
<Child nameFn={this.nameParent}/>
</div>
);
}
}
export default Header;
儿童班
export class Child extends React.Component {
onHClick(e) {
this.props.nameFn(e);
}
render() {
return (
<h1 onClick = {this.props.nameFn('Blue Black Green')}>
Value from parent is = {this.props.name}
</h1>
)
}
}
因此我无法使用 setState 来更新状态。
【问题讨论】:
-
将
nameParent(e) {替换为nameParent = (e) => {以将this范围扩大到班级级别。 -
@MaartenDev 这样做我得到 - 错误:超过最大更新深度。当组件在 componentWillUpdate 或 componentDidUpdate 中重复调用 setState 时,可能会发生这种情况。 React 限制嵌套更新的数量以防止无限循环
-
这是因为您直接在
Child中调用nameFn,我提供了一个答案作为解决此问题的方法
标签: javascript jquery reactjs react-redux